UNIX/Linux:向进程发信号的3种方式

来源:互联网 发布:lte网络优化工程师初级 编辑:程序博客网 时间:2024/05/21 04:01

  UNIX/Linux:向进程发信号的3种方式

问:怎么向另一个进程发信号?你能跟我解释下在UNIX/Linux环境向一个进程发信号的所有

可用的选项吗?

答:你可以用本文所说的任一种方法向进程发各种信号。

1.用Kill向进程发信号

使用kill命令向进程发信号。例如,你想向进程“a.out”发送USR1信号,如下所示。

  $ ps -C a.out

    PID TTY           TIME CMD

   3699 pts/1   00:00:00 a.out

  $ kill -s USER1 3699

注意:参考杀死进程的4种方式-kill,killall,pkill,xkill

2.从另一个进程给一个进程发信号

你可以使用UNIX系统调用kill(从一个C程序)从一个进程给另一个进程发信号。下面的C代码段说明怎样使用kill命令。

Kill系统调用接收两个参数: 1) 需要接收信号的进程PID(进程id) 2)需要发送给进程的信号。调用成功,kill命令返回0。

   int send_signal (int pid)

   {

           int ret;

           ret = kill(pid, SIGHUP);

           printf("ret:%d",ret);

}

3.从键盘给进程发信号

当一个进程在终端上运行,你可以在键盘上通过按一些特定的组合键来给该进程发信号。下面是两个例子。

   *SIGINT(Ctrl + C) - 你已经知道这个信号。按“Ctrl + C”杀死正在运行的前台进程。这样发送SIGINT信号给进程杀死它。

   * 通过按“Ctrl + ”或“Ctrl + Y”给进程发SIGQUIT信号

你可以如下所示使用“stty -a”命令查看给进程发送特定信号的键映射。

  $ stty -a | grep intr

   intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;

【本译文仅用于学习和交流目的。非商业转载请注明译者、出处,并保留文章在译言的完整链接】

http://article.yeeyan.org/view/169956/174755

原创粉丝点击