2011-04-26 52 views

回答

5

当您fork时,子进程中的返回值为0,父进程中的子进程ID(pid)为0。

然后,您可以使用该pid调用kill以查看它是否仍在运行,或请求关闭。要检查进程是否正在运行,请使用0作为信号,然后检查返回值(0 ==正在运行; -1 ==未运行)。要请求关机,请使用SIGTERM作为信号。

1

可能是我知道的fork()后进程之间沟通的最佳方式是通过插座(参见socketpair())。

从那里,你可以通过定义一个通信协议(包括终止请求)来完成任何工作。

0

fork()通话后,您可以使用wait(&status_int)waitpid(child_pid, &status_int, WNOHANG)检测儿童的返回状态,使用后者,如果你不希望阻止等待一个孩子。传递的参数&status_int将是一个指向int的指针,它将在退出后保留子进程的返回状态。如果您想等待任何分支过程完成,并且不关心返回值,则可以简单地拨打wait(NULL)或非阻止版本waitpid(-1, NULL, WNOHANG)