【发布时间】:2013-01-21 19:44:46
【问题描述】:
我一直在尝试编译一段C 代码,它应该使用fork() 函数创建进程。`
#include <stdio.h>
#include <unistd.h>
main()
{
int n=15, z=20, count=3, mult=1;
while(count<3)
{
if(z!=0)
{
z=fork();
n=n+15;
}
else
{
z=fork(); n=n+10; mult=mult*n;
}
printf(" z=%d mult=%d",z,mult);
count=count+1;
}
}
在终端中使用"gcc -Wall -W -Werror main.c -o ProcessCreateC" 编译。我收到错误:
main.c:3:5: error: return type defaults to ‘int’ [-Werror=return-type]
main.c: In function ‘main’:
main.c:20:5: error: control reaches end of non-void function [-Werror=return-type]
cc1: all warnings being treated as errors
由于我只有在 Windows 中编译的经验,而对 Linux 的经验很少,我不知道是什么原因造成的。有什么想法吗??
【问题讨论】:
-
除了语言级别的错误,如果你初始化
count = 3,while(count<3)循环将不会运行。 -
不要忘记在
printf格式字符串末尾的\n(甚至可能在每个fork之前调用fflush(NULL);)。你应该测试fork的结果;它可能会失败!
标签: c linux process fork compiler-flags