C POSIX函数的头文件

Headers for C POSIX functions

本文关键字:文件 函数 POSIX      更新时间:2023-10-16

我在哪里或如何找到正确的C头包含在c++程序中,以获得在POSIX兼容环境中声明的C函数的声明?

我问这个问题是因为我需要在我的c++程序中使用open()系统调用来达到我的目的,所以我最初试图包括关于open()(在SYNOPSIS部分)的在线文档中提到的头,它们是sys/stat.hfcntl.h。然而,当试图编译时,编译器抱怨没有声明open()。在谷歌上搜索后,我发现另一种可能是unistd.h。我尝试使用该头和程序编译。因此,我回到POSIX文档中阅读更多关于unistd.h的信息,以检查那里是否提到了open(),但我找不到任何关于它的信息。

我做错了什么?为什么在POSIX文档和我的GCC环境之间存在这种差异?

在我的Linux Debian/Sid上,man 2 open页面显示:

SYNOPSIS
   #include <sys/types.h>
   #include <sys/stat.h>
   #include <fcntl.h>
所以你需要包括所有三个上面的文件open/usr/include/fcntl.h中声明,但需要从其他两个include中声明。

和下面的测试文件

/* file testopen.c */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int
testopen (void)
{
  return open ("/dev/null", O_RDONLY);
}

使用gcc -Wall -c testopen.c编译,没有任何警告。