【发布时间】:2016-01-20 17:35:18
【问题描述】:
我是一名计算机科学专业的学生,我目前正在学习操作系统课程,该课程要求我们使用 C 我试图解决的一个问题是:
编写一个 fork 一个孩子的程序。
孩子应该睡 5 秒。
孩子应该打印“我准备谋杀我的父母!”
孩子应该通过一个信号杀死它的父母(使用 kill(parent_id,SIGINT))。
孩子应该打印“我现在是孤儿”。
父母应该等待孩子并打印“我是父母”。
我已尝试使用以下代码解决它,但我无法找到获取父母 ID 的方法。感谢任何帮助,在此先感谢 :)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <signal.h>
int main ()
{
pid_t pid =fork();
if (pid<0)
{
printf("%s\n","Error in forking");
}
else if (pid==0)//child
{
sleep(5);
printf("%s","I am ready to murder my parent!");
kill(//parent id here,SIGINT);
printf("%s","I am an orphan now");
}
else{ // parent
printf("%s\n","I am the parent");
}
return 0;
}
【问题讨论】:
-
getppid 在孩子中?
-
在调用 fork() 之前调用 getpid(),你会得到它放在一个银盘上。
-
@HansPassant 那太好了.. :)
标签: c process operating-system fork