Wie benutze ich wait
? Es verwirrt mich einfach ohne Ende. ich fork
ein Baum von Procs mit Rekursion und jetzt müssen die Kinder pausieren (warten/schlafen), während ich pstree ausführe, damit ich den Proc-Baum drucken kann.
Sollte ich es benutzen
int status;
wait(&status);
oder eher
wait(NULL)
und wo soll ich das hinstellen? im Elternteil if(pid > 0)
oder bei den Kindern if(pid==0)
? Vielleicht am Ende von ifs, also speichere ich alle pid
s im Array und führen Sie dann a aus for
über sie und verwenden Sie warten?
meine Codevorlage:
void ProcRec(int index)
{
pid_t pid;
int noChild = getNChild(index);
int i= 0;
for(i = 0; i < noChild; i++)
{
pid = fork();
if (pid > 0)
{
/* parent process */
}
else if (pid == 0)
{
/* child process. */
createProc(index+1);
}
else
{
/* error */
exit(EXIT_FAILURE);
}
}
if(getpid() == root)
{
sleep(1);
pid = fork();
if(pid == 0)
execl("/usr/bin/pstree", "pstree", getppid(), 0);
}
}
sleep(/*How many seconds do you want to wait*/);
.sleep(1);
1 Sekunde warten.– Benutzer3451749
17. Mai 2014 um 9:53 Uhr
Dies sind einige Links, die Ihnen helfen, besser zu verstehen, wie fork() und wait() funktionieren. Schau sie dir an und komme auf deine Frage zurück. Wenn es nicht hilft, dann bitte um Hilfe csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/wait.htmlstackoverflow.com/questions/6210638/… , csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html
– neerajDorle
17. Mai 2014 um 9:55 Uhr
Lies das
wait
undsleep
Handbuchseiten. Ich bin sicher, Sie werden den Unterschied ziemlich schnell finden.– Irgendein Programmierer-Typ
17. Mai 2014 um 9:55 Uhr
Ich verstehe wie
fork
funktioniert. Ich unterscheide auch zwischensleep
undwait
. Was ich nicht weiß ist wasint status
ist, wann zu verwendenstatus
oder wannNULL
und wo soll ichwait
damit ich verwenden kannpstree
– jabk
17. Mai 2014 um 10:09 Uhr