【问题标题】:Printing an array in order with fork()使用 fork() 按顺序打印数组
【发布时间】:2015-02-06 06:44:56
【问题描述】:

我正在尝试在 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));
    }
}

现在的问题是我希望它也按顺序排列(升序或降序,没关系)我该怎么做?

【问题讨论】:

  • fork 不打印数组。它创建了一个新流程。您需要在父级中 waitpid 它。

标签: c fork


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多