首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编译执行上面的信号程序,然后再shell命令行:先让程序在后台运行,得到进程ID,然后用kill向该进程发送信号:kill -USR1 ID,但是没有结果

2013-01-28 
编译执行下面的信号程序,然后再shell命令行:先让程序在后台运行,得到进程ID,然后用kill向该进程发送信号:k

编译执行下面的信号程序,然后再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");
elseif(signo==SIGUSR2)
   printf("received sIGUSR2\n");
else
   err_dump("received signal %d\n",signo);
}

[解决办法]
kill

功能说明:删除执行中的程序或工作。

语  法:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

补充说明:kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。 
参  数:
 -l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。 
 -s <信息名称或编号>  指定要送出的信息。 
 [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。 

热点排行