In LinuxÜbergeben Sie Argumente an neu erstellten Prozess
Ich habe Temp.c-Datei. zu, dass i
int main (int argc, char *argv[])
{
if((cid1 = fork()) == 0) //child1
{
res = execv(proc1, &argv[1]);
}
}
Nun ist diese als kompilieren und ausführen
./a.out "arg1 arg2 arg3"
Jetzt will ich diese arg1 passieren, neue arg2 und arg3 zu verarbeiten, dass i erstellt neuen Prozess und ich brauche alle Argumente zu übergeben erstellt, aber im Inneren, dass, wenn ich es mir 2
überprüfen argc zeigen statt 4
Warum diese Diskrepanz nur 1 Argument passieren, und ich habe innerhalb proc1, die Wert "arg1 arg2 arg3"
ist aber hier möchte ich 3 Argument so argv[1] = arg1, argv[2]=arg2, argv[3]=arg3
Wie erreicht man das?
Es klingt wie Sie möglicherweise das erste Programm falsch aufrufen. Haben Sie versucht, 'argc' im * ersten * Programm zu drucken? Es sollte 4 sein, aber ich wäre nicht überrascht, wenn es nur 2 ist, angesichts dessen, was Sie sehen. –
Ok, genau das habe ich erwartet. Sie übergeben ein einzelnes Argument an das erste Programm, das heißt "arg1 arg2 arg3". Sie übergeben das gleiche Argument unverändert an das zweite Programm. Versuchen Sie, die Anführungszeichen aus der Befehlszeile zu entfernen. Auf diese Weise werden sie als separate Argumente übergeben. –
Actulay ich muss diese doppelten Anführungszeichen verwenden, weil ich im realen Fall habe ich drei Prozess und 3 Argumente durch doppelte Anführungszeichen gruppiert ... –