这篇教程C++ Fork函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Fork函数的典型用法代码示例。如果您正苦于以下问题:C++ Fork函数的具体用法?C++ Fork怎么用?C++ Fork使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Fork函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: m_szCommandCPipedCMD::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: mainintmain(){ 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: mainint 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: mainint 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: mainint 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: mainint 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: RshWatchervoid 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: connectToSftpint 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函数代码示例
|