如何在Windows中使用mingw64使用pipe()和fcntl()?

时间:2019-06-11 13:23:42

标签: mingw-w64 fcntl unistd.h

我正在使用Mingw64将程序从Linux移植到Windows。它确实可以很好地编译,但是现在我试图使测试运行,并且出现了类似implicit declaration of function 'pipe'" (and 'fcntl'), -fPIC ignored for target之类的警告……还有更多有问题的诸如F_GETFD undeclared(和F_SETFD之类的错误, O_NONBLOCK

我现在所做的事情:

我发现所有这些文件都应该包含在{c.c文件中正确包含的fcntl.hunistd.h中。我还可以在Mingw64中找到它们(尽管有多个unistd.h文件...),这就是为什么我在“ include”部分没有出现任何错误的原因。但是,这些文件均未定义管道函数,fcntl函数或任何F_GETFD等。

由于两个标头都包含io.h,因此我也关注了io.h。它确实具有_pipe函数,但是具有3个args,而我的.c文件中使用的函数只有2个,因此可能不一样。

我已经在网上搜索了,但是大多数有相同问题的人根本没有标题。我还找到了一些答案,说要使用“等效” Windows函数来重新编写代码,但是起初我没有写C文件。我也许能理解它的作用,也许一段时间后我会重新编写它,但是由于我有提供标题的Mingw环境,因此我认为我应该能够使用那些pipe()和{{ 1}}函数。它将比重新编写此代码更快。

我所拥有的:

我不允许显示代码,而且我认为这无济于事,因为唯一的问题是存在一些pipe(),fcntl()函数以及F_GETFD,F_SETFD,O_NONCLOCK ,用它写,在头文件中找不到。

标题是Mingw64的标题,可以在这里找到:

https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/crt/unistd.h

https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/crt/fcntl.h

https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/crt/io.h

我想拥有的东西

由于我仍然有使用这些文件的Linux环境,因此我在这里查看了fcntl.h和unistd.h文件;他们绝对不一样。特别是,函数fcntl()和pipe()在其中正确定义。 fcntl.h包含另一个fcntl-linux.h,它定义了F_GETFD和其他。

如何在Mingw64环境中使用它?

0 个答案:

没有答案