php 给c进程发信号,【C语言】利用kill函数实现一个进程向另一个进程发送信号...

一、 kill函数

1.用于向任何进程组或进程发送信号

#includeintkill(pid_t pid,intsig);

2. 参数:  pid:可能选择有以下四种

1. pid大于零时,pid是信号欲送往的进程的标识。     2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个组的进程。     3. pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。     4. pid小于-1时,信号将送往以-pid为组标识的进程。

sig:准备发送的信号代码,假如其值为零则没有任何信号送出,但是系统会执行错误检查,通常会利用sig值为零来检验某个进程是否仍在执行。

返回值说明: 成功执行时,返回0;失败返回-1

二、 示例说明

1.  kill_process_01.c 实现等待接收信号

#include

#include

#include

#include

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

#include

#include

#include

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 signal

2》 查看kill_process_01进程号为 2853

3》 执行./kill_process_02 2853

[./kill_process_02] pid = 2853

[./kill_process_01] catch the signal SIGUSR1 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值