linux进程间通信 实例:使用kill发送信号终止目标进程

参考列表

waitpid(…)函数:https://blog.csdn.net/yiyi__baby/article/details/45539993
exit(…)函数:https://blog.csdn.net/u010006102/article/details/39737155
代码参考:《Linux c与c++一线开发实践》朱文伟 李建英
自学笔记

c语言代码

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>

int main()
{
	pid_t childpid;
	int status;
	int retval;

	childpid = fork();	//创建子进程
	if(-1 == childpid){			//判断子进程是否创建失败
		perror("fork()");
		exit(EXIT_FAILURE);
	}
	else if(0 == childpid){
		puts("In child process");
		sleep(100); //子进程休眠,以便察看父进程行为
		exit(EXIT_SUCCESS);
	}
	else{
		if(0 == (waitpid(childpid, &status, WNOHANG))){	//判断子进程是否已经退出
			retval = kill(childpid,SIGKILL);		//发送SIGKILL给子进程,要求其停止运行
			if(retval){								//判断是否发生信号
				puts("kill failed.");
				perror("kill");
				waitpid(childpid, &status, 0);
			}
			else{
				printf("%d killed\n",childpid);
			}
		}
	}
	exit(EXIT_SUCCESS);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值