2015-02-06 69 views
0

我试图用fork的帮助来打印一个数组,其中每个元素都将由一个单独的子进程打印。用fork()打印数组

void printArray_fork(int *p_array, int length){ 
    int i; 

    pid_t pid; 
    for(i = 0; i<length;i++){ 
     /* Create children procs */ 
     pid = fork(); 
     if(pid==0){ 
      break; 
     } 
    } 

    if(pid == 0) { 
      printf("My process ID : %d value: %d\n",getpid(),*(p_array + i)); 
    } 
} 

现在的问题是,我希望它也是为了(升序或降序,无所谓)我该怎么做?

+1

'fork'不打印数组。它创建一个新的过程。你需要在父进程中“waitpid”。 – 2015-02-06 06:46:33

回答

0

这里稍微修改一下您的代码以便按顺序打印。

/* Create children procs */ 
    pid = fork(); 
    wait(); 

如上所述,您只需要使用等待创建下一个子进程。