您的位置:首页 > 运维架构 > Linux

linux 进程间通信 信号量

2015-08-12 14:02 686 查看
实例中首先使用fork() 创建一个子进程, 在父进程调用kill() 之前, 在子进程中使用raise() 向自身发送SIGSTOP信号,是子进程暂停。接下来使用kill()向子进程发送信号

代码:

ngnsvr9 [** NONE **]/home/xionghailong/example $ cat kill_raise.c

#include <stdio.h>

#include <stdlib.h>

#include <signal.h>

#include <sys/types.h>

#include <sys/wait.h>

int main()

{

pid_t pid;

int ret;

if ((pid = fork()) < 0)

{

printf("fork error! \n");

exit(1);

}

if (pid == 0)

{

printf("child pid: %d is waiting for any signal\n", getpid());

raise(SIGSTOP);

exit(0);

}

else

{

if ((waitpid(pid, NULL, WNOHANG)) == 0)

{

if ((ret = kill(pid, SIGKILL)) == 0)

{

printf("parent kill %d \n", pid);

}

}

waitpid(pid, NULL, 0);

exit(0);

}

}

编译运行:

ngnsvr9 [** NONE **]/home/xionghailong/example $ gcc kill_raise.c -o kill_raise

ngnsvr9 [** NONE **]/home/xionghailong/example $ ./kill_raise

child pid: 546 is waiting for any signal

parent kill 546
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: