Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1798303
  • 博文数量: 335
  • 博客积分: 4690
  • 博客等级: 上校
  • 技术积分: 4341
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-08 21:38
个人简介

无聊之人--除了技术,还是技术,你懂得

文章分类

全部博文(335)

文章存档

2016年(29)

2015年(18)

2014年(7)

2013年(86)

2012年(90)

2011年(105)

分类: C/C++

2012-02-17 21:13:20

  1. #include "apue.h"

  2. int main(int argc ,char * argv[])
  3. {
  4.     int status;

  5.     if (argc < 2)
  6.         err_quit("command required ");

  7.     if ((status = system(argv[1])) < 0)
  8.         err_sys("system() error");
  9.     pr_exit(status);
  10.     exit(0);
  11. }

  1. #include "apue.h"
  2. #include <sys/wait.h>

  3. void pr_exit(int status)
  4. {
  5.     if (WIFEXITED(status))
  6.         printf("normal termination ,exit status = %d \n",WEXITSTATUS(status));
  7.     else if (WIFSIGNALED(status))
  8.         printf("abnormal termination signal nuber =%d %s\n",WTERMSIG(status),
  9.         #ifdef WCOREDUMP
  10.                 WCOREDUMP(status) ? "(core file generated",:" null");
  11.      #else
  12.             "null");
  13.         #endif
  14.     else if (WIFSTOPPED(status))
  15.         printf("child stopped,signal number = %d\n",WSTOPSIG(status));
  16.     printf("just for test the exit \n");
  17. }

  1. Script started on Fri 17 Feb 2012 09:10:43 PM CST
  2. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ ls -lai tsys

  3. 791487 -rwxrwxr-x 1 ubuntu ubuntu 7913 2012-01-05 18:45 [
  4. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ ^C

  5. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ tsys "sleep 60"
  6. ^Cabnormal termination signal nuber =2 null

  7. just for test the exit

  8. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ ./tsys "sleep 60"

  9. ^\abnormal termination signal nuber =3 null

  10. just for test the exit

  11. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ sh

  12. $ sh -c "sleeop 60"

  13. ^C

  14. $ echo $?

  15. 130

  16. $ sh -c "sleeopp 60"

  17. ^\Quit

  18. $ echo $?

  19. 131

  20. $ exit

  21. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ ./tsys "sleep 60" &

  22. [1] 3124

  23. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ ps -f

  24. UID PID PPID C STIME TTY TIME CMD

  25. ubuntu 3058 3057 0 21:10 pts/0 00:00:00 bash -i

  26. ubuntu 3124 3058 0 21:12 pts/0 00:00:00 ./tsys sleep 60

  27. ubuntu 3125 3124 0 21:12 pts/0 00:00:00 sh -c sleep 60

  28. ubuntu 3126 3125 0 21:12 pts/0 00:00:00 sleep 60

  29. ubuntu 3127 3058 0 21:12 pts/0 00:00:00 ps -f

  30. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ kill -KILL 3125

  31. abnormal termination signal nuber =9 null

  32. just for test the exit

  33. [1]+ Done ./tsys "sleep 60"

  34. ubuntu@ubuntu-virtual-machine:~/Desktop/apue/ch8$ exit

  35. exit


  36. Script done on Fri 17 Feb 2012 09:13:05 PM CST

需要注意的是,直接调用的返回值和shell的终止状态时不一样的,在着,直接运行该程序,然后kill的返回值和书上说的不一样,这里直接返回了信号值,杀死调用shell的返回值和直接调用system的值也是
不一样的













阅读(1440) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~