C 中的多进程程序 - 无输出

multiprocess program in C - no output

这是我第一次尝试 C 程序(我是 Java 程序员)。

基本上这是一个应该取正整数并应用 Collat​​z 猜想的程序:

n =  
n/2, if n is even
3 × n + 1, if n is odd

它会一直这样做,直到 n = 1。

在我的程序中,我将一个名为value的const int初始化为100(表示n的初始值),并将该值复制到一个名为newVal的int变量中。

然后我 fork() 一个新进程,并在子进程中不断应用 Collat​​z 猜想,而 newVal 为 != 1,每次应用时打印新值。最后,当 newVal == 1 时,循环结束,我最后一次打印值。

只是,根本没有打印任何东西。我没有收到任何错误(我正在使用腻子在服务器上编写此代码,没有 IDE),只是根本没有输出。我的代码:

int main()
{

  const int value = 100;

  pid = fork();

  if (pid == 0) { /* child process */

  while (value != 1){

    if(!value%2){ 
    value = value/2;
    }

    if(value%2){ 
    value = (value*3)+1;
    }
    printf("%d", value);
  }

  printf("%d", value); 


  }

  else if (pid > 0) { 
  exit(0);
  }
  }

如果newval在循环的顶部是2,那么在下一个循环就是4。 在第二个 if 之前,您需要一个 else。或者,只需将第二个 if 替换为 else - 对于相同的值,两种情况都不成立。