首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中使用fork()函数创建进程

在Linux中使用fork()函数创建进程
EN

Stack Overflow用户
提问于 2013-01-22 03:44:46
回答 3查看 1.7K关注 0票数 0

我一直在尝试编译一段应该使用fork()函数创建进程的C代码。

代码语言:javascript
复制
#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"编译。我收到错误消息:

代码语言:javascript
复制
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几乎没有经验,所以我不知道这是什么原因造成的。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-22 03:46:51

return 0;或类似的返回整数的表达式添加到main()的末尾,并将main()更改为int main(),我想您会发现代码运行良好。

当没有为main()指定返回类型时,它缺省为int。此外,使用已启用的编译器标志,不为main()指定类型会导致错误。

票数 2
EN

Stack Overflow用户

发布于 2013-01-22 03:48:12

问题是双重的(因为所有的警告都是错误的):

  1. main应返回int,例如,实际上以return 0;
  2. you结尾应明确表示返回int的main,即写入int main(,而不仅仅是main(.
票数 0
EN

Stack Overflow用户

发布于 2013-01-22 03:50:41

您没有提到main函数的返回类型为void,所以gcc将其缺省设置为整数返回值。

由于GCC遵循ANSI标准,因此必须将main的返回类型指定为int like:

代码语言:javascript
复制
int main()
{
    //Do stuff
     return 0;
}

记住编译器使用的标准很重要,否则你会继续犯这些错误,花更多的时间调试而不是做一些有效率的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14446051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档