⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 linux下的ftp函数库
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

int mainCreateChildProcess();
int mainCreateOneProcess(int i_name);
int mainChildOneStakeout();
int pid[4];//进程的pid号



int main()
{

	
	/*int pidm;
	int pid1;
	//int pid2;
	if((pid1=fork())==0)
	{
		
		sleep(10);
	    if(execl("/home/slb/fork/1",(char*)0)==-1)
		printf("%s\n",strerror(errno));
		
		
	}


	if((pid2=fork())==0)
	{ 
		
		sleep(10);
		if(execl("/home/slb/fork/2",(char*)0)==-1)
		printf("%s\n",strerror(errno));
		
	}
	pidm=getpid();
    printf("m:%d\n",pidm);
	printf("1 :%d\n",pid1);
	printf("2 :%d\n",pid2);
	printf("1 ret:%d\n",wait(&pid1));
	printf("2 ret:%d\n",wait(&pid2));
	sleep(2);
	int pid[2];
	printf("child process has create sucessfull!pid is:%d\n",pid);*/
    mainCreateChildProcess();
	
    for(int i=0;i<10;i++)
	{
	printf("%s\n","------------------------------");
    int dead=mainChildOneStakeout();
	printf("%s\n","------------------------------");
	}
    
	return 0;
}
////////////////////////////////////
int mainCreateChildProcess()
{
	int i;
	
	for(i=1;i<4;i++)
	{
		/*创建子进程*/
		printf("%s\n","bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
        sleep(1);
		mainCreateOneProcess(i);
		sleep(1);
		printf("%s\n","eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
		
	}
	return 0;
}
////////////////////////////////////////////////////////////////////////////////////
int mainCreateOneProcess(int i_name)//创建进程
{
	if((pid[i_name] = fork())>0)
	{
		printf("child process:%d has create sucessfull!pid is:%d\n",i_name,pid[i_name]);
		return 0;
	}
	
	else if(pid[i_name] == 0)
	{
		switch(i_name)
		{
			case 1:
				execl("./1",NULL);
				exit(0);
				break;
			case 2:
				execl("./2",NULL);
				exit(0);
				break;
			case 3:
				execl("./3",NULL);
				exit(0);
				break;

		}
	}
	else
	{
		printf("child process %d create fault!\n",i_name);
		return -1;
	}
}
//////////////////////////////////////////////////////////////////////////
int mainChildOneStakeout()//监视子进程,如果子进程死亡,则重新创建它
{
	pid_t dead;
	int status;
	
    dead = wait(&status);
 	if(dead==pid[1])
 	{
 		mainCreateOneProcess(1);
		sleep(1);
		printf("dead child process:%d has restart!!\n",1);
 		return 0;
 	}
 	if(dead==pid[2])
 	{
 		mainCreateOneProcess(2);
		sleep(1);
		printf("dead child process:%d has restart!!\n",2);
 		return 0;
 	}
	if(dead==pid[3])
 	{
 		mainCreateOneProcess(3);
		sleep(1);
		printf("dead child process:%d has restart!!\n",3);
 		return 0;
 	}
 	
}
//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -