Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4027868
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: C/C++

2012-07-02 14:45:20

 1) 读取进程pid号
 2) 调用kill系统调用,给进程发SIGTERM 信号。

代码:

  1. static int kill_thread(void)
  2. {
  3.     FILE *f;
  4.     int pid = 0; /* pid number from pid file */

  5.     if((f = fopen(“test.pid”, "r")) == 0)
  6.     {
  7.         fprintf(stderr, "Can't open pid file");
  8.         return -1;
  9.     }

  10.     if(fscanf(f, "%d", &pid)!= 1)
  11.     {
  12.     }

  13.     /* send signal SIGTERM to kill */
  14.     if(pid > 0)
  15.     {
  16.         kill(pid, SIGTERM);
  17.     }

  18.     fclose(f);
  19.     return 0;
  20. }


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

Aquester2012-07-26 15:57:13

一般这样做:
1.先发SIGTERM信号
2.过两三秒钟,再发SIGKILL信号

发SIGTERM信号是为避免过于暴力,让进程可以做些善后工作,SIGKILL是保证一定做到,不过对于处于D状态,即不可中断状态的进程,一切信号都将石沉大海。

txgc_wm2012-07-04 09:19:46

Bean_lee: 可以解释下为啥是SIGTERM信号,还可以用什么信号,这个信号能否忽略。
呵呵.....
只是我的子进程对SIGTERM信号的操作是关闭自己。信号在进程中的操作一般都有预先定义好的处理方式,但也可以自己定义。请参考《Linux环境高级编程》,里面讲的很详细。

Bean_lee2012-07-03 21:33:13

可以解释下为啥是SIGTERM信号,还可以用什么信号,这个信号能否忽略。
呵呵

txgc_wm2012-07-03 10:29:48

sxcong: 假设已知进程名,system("killall -9 processname"),就是有点暴力。
有些进程会特殊处理SIGTERM,变态一点的话,不是退出,有可能是重启了。.....
采用system的话,我在使用中发现有时杀不死进程,进而使该进程成为孤儿进程。

sxcong2012-07-03 08:35:38

假设已知进程名,system("killall -9 processname"),就是有点暴力。
有些进程会特殊处理SIGTERM,变态一点的话,不是退出,有可能是重启了。