Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix C-带fork的IPC信号量_Unix_Ipc - Fatal编程技术网

Unix C-带fork的IPC信号量

Unix C-带fork的IPC信号量,unix,ipc,Unix,Ipc,我对以下程序有问题: 它应该做什么: 第一个子进程应该从STDIN中获取一个数字,并将其设置为共享变量。 第二个子进程应该从共享变量中读取数字,并将其二进制打印在标准输出上 它的作用是: 它从不要求数字,在运行它之后,它只打印零的inifnite数字。它看起来像是直接跳到第二个孩子身上,永远不会离开它 代码: 将第一行更改为: if(fork() == 0) 差不多 pid_t processID = fork(); if(processID == 0) 更改第二行,内容为 if(fork(

我对以下程序有问题:

它应该做什么: 第一个子进程应该从STDIN中获取一个数字,并将其设置为共享变量。 第二个子进程应该从共享变量中读取数字,并将其二进制打印在标准输出上

它的作用是: 它从不要求数字,在运行它之后,它只打印零的inifnite数字。它看起来像是直接跳到第二个孩子身上,永远不会离开它

代码:


将第一行更改为:

if(fork() == 0)
差不多

pid_t processID = fork();
if(processID == 0)
更改第二行,内容为

if(fork() == 0)
给另一个人。更明确地说,对于第二行,更改:

}
if(fork() == 0)
{
    //second child process
致:


如果剩下的代码正常,它可能会开始工作。至少这将使您的分叉保持良好状态,以便您可以继续处理其余代码。

您分叉了两次,并且两次都检查了0。
}
if(fork() == 0)
{
    //second child process
}
else
{
    if (processID < 0) {
        printf ("Fork error\n"); exit(-1);
    } 
    //second child process