
Ich versuche, ein Programm zu erstellen, das Datei1 auf folgende Weise in Datei2 kopiert:
cp -i -p file1 file2
Nun rufe ich meine ausführbare Kopie auf und rufe
copy file1 file2
Es bewirkt dasselbe wie der erste Befehl (-i und -p).
Ich konnte dies tun mitexecl
char const *copy[] = {"/bin/cp","cp","-p","-i",0};
execl(copy[0],copy[1],copy[2],copy[3],argv[1],argv[2],copy[4]);
Aber ich möchte es jetzt tun mitexecv
Ich habe die Manpage der exec*-Funktionen gesehen
execl(const char *path, const char *arg, ...);
execv(const char *path, char *const argv[]);
und so scheint das erste Argument das gleiche zu sein, jedoch,
Wie das zweite Argument für execv
istchar *const argv[]
was muss ich an der execv
Funktion ändern, um das gleiche Ergebnis zu erhalten?
Meine Hauptfunktionsargumente sehen wie folgt aus:
main(int argc,char * argv[])
Antwort1
Ändern Sie Ihr copy
Array und den Funktionsaufruf. Das Folgende ist ein Minimalbeispiel:
#include <unistd.h>
int main(int arcg, char *argv[])
{
char *const args[] = {"cp","-p","-i", argv[1], argv[2], 0};
execv("/bin/cp", args);
}