这是我的代码,我已经简化了它。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void signal_handle(int sig)
{
int status;
wait(&status);
}
int main()
{
pid_t pid = fork();
if (pid > 0)
signal(SIGCHLD, signal_handle);
if (pid == 0) {
if (execl("/bin/ls", "/", (char *)0) < 0)
{
perror("execl");
return -1;
}
}
return 0;
}
当我运行它时,我发现,子进程打印运行结果,但父进程被阻塞。
如果一个父亲有很多儿子进程,我该怎么办?wait(&status)
为每个人设置?
我很抱歉我的英语不好!