【C语言】利用kill函数实现一个进程向另一个进程发送信号
来源:互联网 发布:mysql优化书籍 编辑:程序博客网 时间:2024/05/20 23:05
一、 kill函数
1.用于向任何进程组或进程发送信号
#include <signal.h>
int kill(pid_t pid, int sig);
2. 参数:
pid:可能选择有以下四种
1. pid大于零时,pid是信号欲送往的进程的标识。
2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个组的进程。
3. pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。
4. pid小于-1时,信号将送往以-pid为组标识的进程。
sig:准备发送的信号代码,假如其值为零则没有任何信号送出,但是系统会执行错误检查,通常会利用sig值为零来检验某个进程是否仍在执行。
二、 示例说明
1. kill_process_01.c 实现等待接收信号
#include <stdio.h>#include <unistd.h>#include <signal.h>#include <stdlib.h>char acProcessName[32];void sig_handler(int signo);int main(int argc, char **argv){ snprintf(acProcessName, sizeof(acProcessName), "%s", argv[0]); printf("\n [%s] main is waiting for a signal\n", acProcessName); if(signal(SIGUSR1,sig_handler) == SIG_ERR){ perror("signal errror"); exit(EXIT_FAILURE); } for(; ;);//有时间让我们发送信号 return 0;}void sig_handler(int signo){ printf("\n [%s] catch the signal SIGUSR1 %d\n", acProcessName, signo); exit(EXIT_FAILURE);}
2. kill_process_02.c 实现向指定进程号发送信号
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <signal.h>char acProcessName[32];int main(int argc, char **argv){snprintf(acProcessName, sizeof(acProcessName), "%s", argv[0]);int pid = 0;if (argc != 2){printf("%s [pid_number]\n", argv[0]);return -1;}pid = atoi(argv[1]);kill(pid, SIGUSR1);printf("[%s] pid = %d\n", acProcessName, pid);return 0;}
3. 运行结果
1》 执行./kill_process_01 & [./kill_process_01] main is waiting for a signal2》 查看kill_process_01进程号为 28533》 执行./kill_process_02 2853[./kill_process_02] pid = 2853[./kill_process_01] catch the signal SIGUSR1 10
0 0
- 【C语言】利用kill函数实现一个进程向另一个进程发送信号
- kill(),raise(),abort()函数向进程发送信号
- 使用kill向进程发送信号
- C语言kill()函数:传送信号给指定的进程
- kill - 终止进程/发送信号
- pthread_kill向子进程发送信号函数
- 消息队列实现从一个进程向另一个进程发送一个数据块的方法
- C语言信号传送函数kill()_传送信号给指定的进程
- Linux kill --终止进程/发送信号
- 进程间通信之kill发送信号
- 信号实现等待另一个进程
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux信号处理、killall、SIGALRM、sigaction函数和结构体、向进程发送信号
- linux信号处理、killall、SIGALRM、sigaction函数和结构体、向进程发送信号
- kill 进程一个简单函数接口
- Java基础之switch语句
- 关于web性能的思考与分享[10]-fis3构建工具-语法教程(2)之定位资源
- 34.UIImage — 把多张图片合成一张图
- Hadoop集群完全分布式搭建教程-CentOS
- 各种定位-css 傻傻分不清楚
- 【C语言】利用kill函数实现一个进程向另一个进程发送信号
- Android 错误提示:Conversion to Dalvik format failed with error 1 解决办法
- 《线性代数及其应用》
- 芒果iOS开发之Project/Users/用户名/.../xxx.xcodeproj cannot be open because the project file cannot be parsed
- 23种设计模式(19)_行为型_解释器模式(Interpreter Pattern)
- 输入命令:ssh localhost
- J48源码学习笔记(一)
- STM32 UCOS所需最小空间参考(备忘)
- sqlite3配置问题