所以我今天一直在做这个,我很确定我已经接近了,但我仍然对如何终止子进程以及我是否正确地完成了这个任务感到有点困惑。以下是问题描述:
Write a UNIX program that creates a child process that
prints a greeting, sleeps for 20 seconds, then exits.
The parent process should print a greeting before creating
the child, and another after the child has terminated. It
should then terminate.
这是我拥有的代码:
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int child;
printf("Parent Greeting\n");
child = fork();
if(child >= 0)
{
if(child == 0)
{
printf("Child process\n");
sleep(2);
printf("Child exiting\n");
exit(0);
}
}
else
{
printf("Failed\n");
}
printf("End");
exit(1);
return 0;
}
我遇到的问题是如何正确终止子进程。如果我将退出语句注释掉,那么子进程将运行、等待,然后将打印“结束”语句。如果我有退出语句,那么子进程会说它正在退出并且程序将一直等待直到我 ctrl+c 退出它。任何帮助将不胜感激,因为我对该主题感兴趣但有点困惑:) 谢谢!