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

时间:2016-02-09 18:42:58

标签: c multiprocessing

这是我第一次尝试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时,循环结束,我最后一次打印该值。

只有,根本没有打印。我没有得到任何错误(我在使用putty,没有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);
  }
  }

1 个答案:

答案 0 :(得分:1)

如果newval在循环顶部为2,则在下一循环时它将为4。 在第二个else之前需要if。或者,只需用if替换第二个else - 对于相同的值,两种情况都不能为真。