linux下kill函数的相关用法

kill并不是杀死的意思,而是发信号
1、自己杀死自己

int main(int argc,char *argv[])
{
	kill(getpid(),SIGKILL);

	printf("hello\n");

	return 0;
}

2.子进程杀死父进程

int main(int argc,char *argv[])
{

	pid_t pid;
	int i=0;
	int n=3;
	
	for(i=0; i<n; i++)
	{
		//创建子进程
		pid = fork();
		if(pid<0)
		{
			perror("fork error");
			return -1;
		}
		else if(pid==0)
		{
			break;
		} 
	}

	if(i==n)
	{
		printf("father process,pid==[%d],child pid == [%d]\n",getpid(),pid);
		sleep(30);

	}

	//第一个子进程
	if(i==0)
	{
		printf("the first child,pid==[%d]\n",getpid());
		//子进程杀死父进程
		kill(getppid(),SIGKILL);
			
		
	}

	//第二个子进程
	if(i==1)
	{
		printf("the second child,pid==[%d]\n",getpid());
	}
	if(i==2)
	{
		printf("the three child,pid==[%d]\n",getpid());
	}

	return 0;
}

3、父进程杀子进程(待验证)

以下杀伤范围太广,很少用
4、杀死同组所有进程

kill(0,SIGKILL);

5、杀死所有系统中有权限的进程,(可以杀bash)

kill(-1,SIGKILL);

拓展:raise(给当前进程发指定信号)和abort函数(不常用)

raise(signo) == kill(getpid(), signo);
abort() == kill(getpid(), SIGABRT);

abort(给自己发送异常终止信号 6) SIGABRT,并产生core文件)举例:

int main(int argc,char *argv[])
{
	//相当于kill(getpid(),SIGABRT)
	abort();

	printf("hello\n");

	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值