C 中的多进程程序 - 无输出
multiprocess program in C - no output
这是我第一次尝试 C 程序(我是 Java 程序员)。
基本上这是一个应该取正整数并应用 Collatz 猜想的程序:
n =
n/2, if n is even
3 × n + 1, if n is odd
它会一直这样做,直到 n = 1。
在我的程序中,我将一个名为value的const int初始化为100(表示n的初始值),并将该值复制到一个名为newVal的int变量中。
然后我 fork() 一个新进程,并在子进程中不断应用 Collatz 猜想,而 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
- 对于相同的值,两种情况都不成立。
这是我第一次尝试 C 程序(我是 Java 程序员)。
基本上这是一个应该取正整数并应用 Collatz 猜想的程序:
n =
n/2, if n is even
3 × n + 1, if n is odd
它会一直这样做,直到 n = 1。
在我的程序中,我将一个名为value的const int初始化为100(表示n的初始值),并将该值复制到一个名为newVal的int变量中。
然后我 fork() 一个新进程,并在子进程中不断应用 Collatz 猜想,而 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
- 对于相同的值,两种情况都不成立。