实验四 Linux进程控制实验

#include
#include
#include
#include
#include
int main()
{
	pid_t childpid;
	int status;
	int retval;
	childpid = fork();//返回一个进程号
	if (-1 == childpid)
	{
		perror("fork()");
		exit(EXIT_FAILURE);
	}
	else if (childpid == 0)
	{
		puts("In child progress");
		//获取本进程标识号
		printf("子进程号=%d,子进程睡眠10秒\n", (int)getpid());
		sleep(10);
		exit(EXIT_SUCCESS);
	}
	else
	{
		printf("父进程号=%d,父进程等待子进程结束,若未结束则立即返回\n", (int)
			getpid());
		//waitpid暂时停止目前进程的执行,直到有信号来到或子进程结束
		if (0 == (waitpid(childpid, &status, WNOHANG)))//立即返回
		{
			printf("杀死子进程前当前的活跃进程\n");
			retval = kill(childpid, SIGKILL);//传送参数SIGKILL指定的信号给参数child
			//指定的进程
			printf("父进程杀死子进程\n");
			if (retval)
			{
				puts("kill failed.");
				perror("kill");
				waitpid(childpid, &status, 0);
			}
			else
			{
				printf("%d killed\n", childpid);
				printf("杀死子进程后当前的活跃进程\n");
			}
		}
	}
	exit(EXIT_SUCCESS);
}

你可能感兴趣的:(Linux)