Linux下对后台进程通过kill传递信号不起作用的问题
2013-08-01 19:32
357 查看
在阅读APUE信号一章时,我遇到Linux下对后台进程通过kill传递信号不起作用的问题
具体情形与如下链接中的老兄一致:
http://bbs.csdn.net/topics/390335913?page=1#post-395188120
这是我的解决方案:
这个问题应该是linux的进程后台运行的实现问题。可以换种方法进行实验:
1 在程序中加入打印getpid()函数
2 在前台运行该程序
3 新开一个终端窗口,在新开的终端窗口中输入:kill -USR1 [pid]
4 返回原终端,查看实验结果
kill
功能说明:删除执行中的程序或工作。
语 法:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
补充说明:kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
参 数:
-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
具体情形与如下链接中的老兄一致:
http://bbs.csdn.net/topics/390335913?page=1#post-395188120
编译执行下面的信号程序,然后再shell命令行:先让程序在后台运行,得到进程ID,然后用kill向该进程发送信号:kill -USR1 ID,但是没有结果
#include "apue.h" static void sig_usr(int); int main(void) { if(signal(SIGUSR1,sig_usr)==SIG_ERR) err_sys("can not catch SIGUSR1"); if(signal(SIGUSR2,sig_usr)==SIG_ERR) err_sys("can not catch SIGUSR2"); for( ; ; ) pause(); } static void sig_usr(int signo) { if(signo==SIGUSR1) printf("received sIGUSR1\n"); else if(signo==SIGUSR2) printf("received sIGUSR2\n"); else err_dump("received signal %d\n",signo); }
这是我的解决方案:
这个问题应该是linux的进程后台运行的实现问题。可以换种方法进行实验:
1 在程序中加入打印getpid()函数
2 在前台运行该程序
3 新开一个终端窗口,在新开的终端窗口中输入:kill -USR1 [pid]
4 返回原终端,查看实验结果
kill
功能说明:删除执行中的程序或工作。
语 法:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
补充说明:kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
参 数:
-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
相关文章推荐
- Linux下对后台进程通过kill传递信号不起作用的问题
- Linux 脚本和程序对SIGINT的处理方案,脚本通过kill给程序传递信号
- 嵌入式 Linux 通过信号机制在进程间传递参数中的几个主要函数解析
- WM下C#程序通过webservices传递时间到Java后台的时间问题
- linux 解决后台进程会自动退出的问题
- 进程间通信,把字符串指针作为参数通过SendMessage传递给另一个进程,不起作用
- Linux下通过端口Kill掉进程
- linux通过grep kill掉tomcat进程脚本,百分百kill掉
- 一个关于linux进程函数kill的问题
- 关于Ajax中通过response在后台传递数据问题
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- 信号退出【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
- Linux 技巧:让进程在后台可靠运行的几种方法&CentOS 7通过Firewall开放防火墙端口
- linux 杀掉kill/pkill某个进程的问题解决
- 我使用过的Linux命令之kill - 终止进程/发送信号
- linux 遭遇SIGPIPE信号,导致进程退出的问题
- Linux中通过 kill命令 杀死指定进程
- linux信号处理--通过发送信号控制进程
- linux 下进程间通过信号进行通信的具体实现过程
- Linux中与进程终止相关的信号SIGTERM,SIGKILL,SIGINT