Я новичок в процессах в linux и c. Я использую этот простой пример:Цель wait() в родительском c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, const char * argv[]) {
pid_t child_pid_or_zero = fork(); //fork returns twice
if(child_pid_or_zero < 0)
{
//if fork returns a number smaller than zero, something wrong happened
perror("Something wrong happened\n");
exit(-1);
}
if(child_pid_or_zero > 0)
{
//if fork returns a number greater than zero, this is the parent process
printf("I'm the parent, my pid is: %d\t My child pid is %d\n", getpid(), child_pid_or_zero);
wait(NULL);
}
else
{
//this means that fork now returned 0, the child process is running
printf("I am the child with pid: %d\t My parent pid is: %d\n",child_pid_or_zero, getppid());
}
return 0;
}
Если бы я опускаем ждать() метод в
если (child_pid_or_zero> 0)
Что будет происходить? Я пробовал это сам, и, по-видимому, немедленной разницы не было. Всегда ли нужно использовать wait(), или это применимо только тогда, когда ребенок должен выполнять тяжелые вычисления и т. Д.?
Заранее спасибо.
https://en.wikipedia.org/wiki/Orphan_process –
http://stackoverflow.com/questions/23709888/how-to-use-wait-in-c – SMW
при компиляции всегда включайте все предупреждения, затем исправить эти предупреждения. – user3629249