Frage/Problem zu execv/l
-
Hi
ich habe folgendes Problem. Meinem Programm werden zusätzlich ein paar Parameter übergeben zb 2 Dateinamen. nun möchte ich mittels execv oder execl den cp befehl aufrufen damit die 2 angegebenen Dateien in ein anderes Verzeichnis kopiert werden. Das Verzeichnis wird per #define BACKUP angegeben
was zb ohne Probleme funktioniert ist execv("/bin/cp", argv)
Allerdings weiß ich nicht wie ich an argv jetzt noch ein weiteres Argument anhänge (in meinem Fall das per #define Festgelegte Backupverzeichnis, damit der cp Befehl weiß wohin er die Argumente kopieren sollexecl kommt für mich nciht in Frage weil ich vor Programmstart nicht weiß wieviele Argumente/Dateinamen der Benutzer eingibt, die ich dann kopieren soll
Gibt es irgendeine Möglichkeit das Problem zu lösen? (habs mit strcat versucht aber funktionierte nicht)
-
so ungefähr
size_t anzahl_der_argumente = argc + 2; char **args = malloc(sizeof(*argv) * anzahl_der_argumente); args[0] = "cp"; for(int i = 1; i < argc; ++i) { args[i] = argv[i]; } args[argc] = BACKUP; args[argc+1] = 0x0; if(execvp("cp", args) == -1) { // ... }