2012年3月30日金曜日

[C 语言] 在循环中 fork 子进程

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

void CreateSubProcess(int num);

int main(int argc, char *argv[])
{
    CreateSubProcess(5);
}

void CreateSubProcess(int num)
{
    pid_t pid;
    int i;
    for(i = 0; i < num; i++) {
        sleep(1);
        pid = fork();
        if(pid == 0 || pid == -1) // 子进程或错误时, 退出 for 循环继续执行下面的
            break;
    }
    if(pid == -1) {
        perror("fail to fork!\n");
        exit(1);
    } else if(pid == 0) {
        printf("child pid = %d, parent pid = %d\n", getpid(), getppid());
    } else {
        printf("all child's parent pid = %d\n", getpid(), getpid());
    }
    exit(0);
}

0 件のコメント:

コメントを投稿