Ich habe die unten C-Code in Linux (gcc):einen übergeordneten Prozess warten lassen und Linux-Befehl so oft laufen, wie
void doWho(void)
{
char entry[10];
int ret, i;
ret = read(0, entry, 10);
if (*entry == 'u')
{
for(i=0; i<3; i++)
{
execl("/usr/bin/who","who",NULL);
}
}
}
int main(int argc, char *argv[])
{
int childpid;
printf("Before it forks\n");
childpid = fork();
if(childpid == 0)
{
printf("This is a child process\n");
doWho();
exit(0);
} else
{
printf("This is the parent process\n");
wait(NULL);
}
return 0;
}
ich den übergeordneten Prozess wollen auf unbestimmte Zeit und laufen noch zu halten „, die "Jedes Mal, wenn ich die" u "-Taste drücke. Ich bekomme nur einmal den gewünschten Effekt, und dann werden die Kind- und Elternprozesse beendet. Irgendwelche Hilfe dazu?
Ich denke, Sie müssen [lesen Sie mehr über die 'exec' Familie von Funktionen] (http://man7.org/linux/man-pages/man3/exec.3.html) und wie sie funktionieren. Kurz gesagt: Die Schleife sollte über die 'fork'- und' doWho'/'wait'-Aufrufe sein. –
Warum brauchen Sie das mit Gabel? Sie können es auch mit einem einfachen C-Programm tun? – Gaurav
Dies ist eine Zuweisung, mein Code wäre erforderlich, um untergeordnete Prozesse zu erstellen, um einen Linux-Befehl jedes Mal auszuführen, wenn ich einen bestimmten Schlüssel – Sergio