- 论坛徽章:
- 0
|
给你个程序看看。
- #include <sys/types.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <signal.h>
- static void sig_hup(int signo);
- static void pr_ids(char *name);
- int main()
- {
- char c;
- pid_t pid;
- pr_ids(“parent”);
- if((pid=fork())>0)
- {
- sleep(1);
- exit(0);
- }
- else
- {
- pr_ids(“child”);
- signal(SIGHUP,sig_hup);
- kill(getpid(),SIGTSTP);
- pr_ids(“child”);
- if(read(0,&c,1)!=1)
- printf(“read error from control terminal,errno=%d\n”,errno);
- exit(0);
- }
- }
- static void sig_hup(int signo)
- {
- printf(“SIGHUP received,pid=%d\n”,getpid());
- rerutn;
- }
- static void pr_ids(char *name)
- {
- printf(“%s:pid=%d,ppid=%d.pgrp=%d\n”,name,getpid(),getppid(),getpgrp());
- }
复制代码 |
|