您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ Fork函数代码示例

51自学网 2021-06-01 20:47:51
  C++
这篇教程C++ Fork函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中Fork函数的典型用法代码示例。如果您正苦于以下问题:C++ Fork函数的具体用法?C++ Fork怎么用?C++ Fork使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了Fork函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: m_szCommand

CPipedCMD::CPipedCMD(const char *cmd) : m_szCommand(cmd), m_ChildPID(0), m_bChEOF(false){    Pipe(m_iPipeFD);        m_ChildPID = Fork();        if (m_ChildPID == 0) // Child    {        if (setsid() == -1)            _exit(127);                // Redirect to stdout        dup2(m_iPipeFD[1], STDOUT_FILENO);        close(m_iPipeFD[0]);        close(m_iPipeFD[1]);                execlp("/bin/sh", "sh", "-c", cmd, NULL);        _exit(127);    }    else if (m_ChildPID > 0) // Parent    {        ::Close(m_iPipeFD[1]);        m_PollData.fd = m_iPipeFD[0];        m_PollData.events = POLLIN | POLLHUP;    }}
开发者ID:BackupTheBerlios,项目名称:nixstaller-svn,代码行数:26,


示例2: main

/** * make and then "./tcpserv01 [mode]" to run * mode = 1: reverse string * mode = 2: reverse string and save to file * mode = 3: take number input and return */int main(int argc, char **argv) {	printf("TCP Server!/n");	int listenfd, connfd;	pid_t childpid;	socklen_t clilen;	struct sockaddr_in cliaddr, servaddr;	listenfd = Socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof (servaddr));	servaddr.sin_family = AF_INET;	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);	servaddr.sin_port = htons(SERV_PORT);	Bind(listenfd, (SA *) & servaddr, sizeof (servaddr));	Listen(listenfd, LISTENQ);	while (1) {		clilen = sizeof (cliaddr);		connfd = Accept(listenfd, (SA *) & cliaddr, &clilen);		if ((childpid = Fork()) == 0) {			Close(listenfd);			//            int mode = atoi(argv[1]);			int mode = 1;			// process request from client			process_request(connfd, mode);			exit(0);		}		Close(connfd);	}}
开发者ID:duybkict,项目名称:BattleShip,代码行数:39,


示例3: main

intmain(){  SpaceId kid;  int joinval;  char *args[2];  prints("PARENT exists/n", ConsoleOutput);  args[0] = "kid";  args[1] = (char *)0;  kid = Fork();  if (kid != 0) {    prints("PARENT after fork; kid pid is ", ConsoleOutput);    printd((int)kid, ConsoleOutput);    prints("/n", ConsoleOutput);        joinval = Join(kid);        prints("PARENT off Join with value of ", ConsoleOutput);    printd(joinval, ConsoleOutput);    prints("/n", ConsoleOutput);    Halt();  /* not reached */  } else     Exec("kid", args);}
开发者ID:jeche,项目名称:OPS,代码行数:28,


示例4: main

int main(int argc, char *arg[]){  char *pToInputLine = NULL;  /*This MUST be initialized, otherwise getline might    think the memory pointed to by garbage is good to    use or re-allocate with realloc!*/  int bufsize=0;  /*We MUST use a non-misleading, and even better, informative    name for the bufsize variable. My original "nread" was WRONG*/  int nret;  printf("Hello. This is an interactive program./n");  if(signal(SIGTSTP,handler)==SIG_ERR||signal(SIGINT,handler) == SIG_ERR)  	unix_error("signal error");   //pause();  nret = getline( &pToInputLine, &bufsize, stdin);  printf("Thanks for line %s lengths: bufsize=%d nret=%d,", pToInputLine, bufsize, nret);  printf("/nGive me another command:");  nret = getline( & pToInputLine, &bufsize, stdin );  printf("Thanks for line %s Lengths: bufsize=%d nret=%d,", pToInputLine, bufsize, nret);   if( strcmp(pToInputLine, "FirstCommand/n")==0)    {      printf("Thanks for that FirstCommand!/n");    }  else if( strcmp(pToInputLine, "Fork/n") == 0 )    {      int fret;      printf("hey man, I see you really want to try a Fork. Here goes/n");      fret = Fork();      printf("Fork() returned %d/n", fret);    }}
开发者ID:jiuningzhong,项目名称:proj01,代码行数:34,


示例5: main

int main(int argc, char **argv){    int pid;    sigset_t mask;    Signal(SIGCHLD, handler);    initjobs(); /* Initialize the job list */    while (1) {	Sigemptyset(&mask);	Sigaddset(&mask, SIGCHLD); 	Sigprocmask(SIG_BLOCK, &mask, NULL); /* Block SIGCHLD */    	/* Child process */	if ((pid = Fork()) == 0) {	    Sigprocmask(SIG_UNBLOCK, &mask, NULL); /* Unblock SIGCHLD */	    Execve("/bin/ls", argv, NULL);	}	/* Parent process */	addjob(pid);  /* Add the child to the job list */	Sigprocmask(SIG_UNBLOCK, &mask, NULL);  /* Unblock SIGCHLD */    }    exit(0);}
开发者ID:09zwcbupt,项目名称:csapp,代码行数:25,


示例6: main

int main(int argc, char **argv) {    sigset_t mask, prev;    Signal(SIGCHLD, sigchld_handler);    Signal(SIGINT, sigint_handler);    Sigemptyset(&mask);    Sigaddset(&mask, SIGCHLD);    while (1) {        Sigprocmask(SIG_BLOCK, &mask, &prev); /* Block SIGCHLD */        if (Fork() == 0) /* Child */            exit(0);        /* Wait for SIGCHLD to be received */        pid = 0;        while (!pid)             Sigsuspend(&prev);        /* Optionally unblock SIGCHLD */        Sigprocmask(SIG_SETMASK, &prev, NULL);         /* Do some work after receiving SIGCHLD */        printf(".");    }    exit(0);}
开发者ID:Nigelzhf,项目名称:csappCodeHomeWork,代码行数:27,


示例7: main

int main(int argc, char *argv[]){	pid_t pid;	TELL_WAIT();	pid = Fork();	if (pid == 0)	{			while ( n < 1000)		{			WAIT_PARENT();			printf(" c%d ", n);			n += 2;			TELL_PARENT(getppid());			//sleep(1);		}			}	else if(pid > 0)	{		while (n < 1000)		{						printf(" p%d ", n);			n += 2;			TELL_CHILD(pid);		//	sleep(1);			WAIT_CHILD();					}			}	printf("Hello, world/n");		return 0;}
开发者ID:jack-lijing,项目名称:unix,代码行数:35,


示例8: RshWatcher

void RshWatcher(int ninvoke,int port){	/* echo dynamically allocated PORT number */	/* fprintf(stdout,"%d/n",port); */	/* if( foreground ) */	if( ninvoke == 0 ){		CStr(host,MaxHostNameLen);		getpeerNAME(0,AVStr(host));		proc_title("delegated/rsh/%s",host);		if( Fork("RshWatcher") == 0 ){			serverControl(stdin,stdout);			_Finish(0);		}	}else{		fprintf(stderr,"/r/nRESTARTED/r/n> ");		fflush(stderr);	}	/*	fclose(stdin);	fclose(stdout);	fclose(stderr);	*/}
开发者ID:2dot4,项目名称:Psiphon3-for-Linux,代码行数:25,


示例9: main

/* increment counter in shared memory segment; mmap /dev/zero version */ int main(void){	int fd, i, counter;	pid_t pid;	void *area;	if ((fd = open("/dev/zero", O_RDWR)) < 0)		err_sys("open error");	if ((area = mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,			 fd, 0)) == MAP_FAILED)		err_sys("mmap error");	close(fd);		/* can close /dev/zero now that it is mapped */	TELL_WAIT();	if ((pid = Fork()) > 0) { /* parent */		for (i = 0; i < NLOOPS; i += 2) {			if ((counter = update((long *)area)) != i)				err_quit("parent: expected %d, got %d", i, counter);			TELL_CHILD(pid);			WAIT_CHILD();		}	} else {		/* child */		for (i = 1; i < NLOOPS + 1; i += 2) {			WAIT_PARENT();			if ((counter = update((long *)area)) != i)				err_quit("child: expected %d, got %d", i, counter);			TELL_PARENT();		}	}	exit(0);}
开发者ID:tcharding,项目名称:self_learning,代码行数:33,


示例10: connectToSftp

int connectToSftp(const char *host,int port,const char *user,int fdc,int fdv[]){	int socks[2];	socks[1] = CC_connect("sftp",host,port,user);	if( 0 <= socks[1] ){		DEBUG("---- SFTPCC HIT[%d] %[email
C++ ForkThread函数代码示例
C++ Forbid函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。