最近在看《unix环境高级语言编程》,对于第九章建立孤儿进程组的代码不是很理解,具体有两点:
1.子进程调用kill后为什么不会退出
2.我的运行时环境是debain8,运行时并没有出现read error的打印,是unix实现不同的原因吗,有没有大佬能有详细一点的描述
谢谢
附上书中代码:
#include "apue.h"
#include <errno.h>
static void sig_hup(int signo){
printf("SIGHUP received,pid=%ld\n",(long)getpid());
}
static void pr_ids(char* name){
printf("%s:pid=%ld,ppid=%ld,pgrp=%ld,tpgrp=%ld\n",
name,(long)getpid(),(long)getppid(),
(long)getpgrp(),(long)tcgetpgrp(STDIN_FILENO));
fflush(stdout);
}
int main(){
char c;
pid_t pid;
pr_ids("parent");
if((pid=fork())<0)
err_sys("fork error");
else if(pid>0)
sleep(5);
else{
pr_ids("child");
signal(SIGHUP,sig_hup);
kill(getpid(),SIGTSTP);
pr_ids("child");
if(read(STDIN_FILENO,&c,1)!=1)
printf("read error %d on controlling TTY\n",errno);
}
exit(0);
}
再次感谢