在 Windows 上 fork 时出错,但在 linux 上则不然

问题描述 投票:0回答:1

我是一名大学生,我试图让 fork 命令运行到以下程序中,但由于某种原因,当我在 Windows 上编译它时,它给了我这个错误

warning: implicit declaration of function 'fork' [-Wimplicit-function-declaration] 32 |     pid1=fork();

#include <stdio.h>
#include <unistd.h>

int main(){
int pid1,pid2,pid3,pid4,pid5;
    pid1=fork();
    if (pid1 == 0) pid2 = fork();
    else 
        pid3=fork();
        if (pid3!=0){
            pid4=fork();
            if (pid4!=0)
                pid5=fork();
        }
    printf("this is my pid: %d",getpid());
    return 0;
}

(我包含了unists头文件,因为除非我包含它,否则我的linux虚拟机不会运行代码,再次不知道为什么,因为据我所知,fork命令应该包含在stdio文件中)

奇怪的是,当我尝试将它编译到 Linux 中时,由于某种原因它工作得很好。所以我猜这与我的编译器有关,但我不知道到底是什么,所以我希望有人可以帮助我解决这个问题。

c fork
1个回答
0
投票

我知道 fork 命令应该包含在 stdio 文件中

不,它不应该包含在

stdio.h
头文件中。 ISO C 标准中未提及
fork()
。它是 POSIX 扩展,存在于类 UNIX 操作系统上。

fork()
不是 Windows C API 的一部分,
unistd.h
也不是。

© www.soinside.com 2019 - 2024. All rights reserved.