在C ++中调用本手册第2节中的函数

时间:2013-08-15 20:31:11

标签: c++ linux system-calls

Unix手册的第2部分介绍了系统调用(尽管它们实际上可能是由Linux上的系统libc - fork(2)实现的)。以下是一个非常愚蠢的示例,调用open(2)close(2)

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int
main(int argc, char *argv[]) {
  int fd;

  fd = open("/dev/null", O_APPEND);
  close(fd);
}

我写了很多C ++代码已经有一段时间了。我很好奇C ++库是否现在有更多的C ++方式来访问这些函数而不必包含大量的C头文件?上面的代码本质上是直接的C.

如果你想移动文件描述符(确保fd的0,1和2是你想要的那样)或做ioctls等,低级函数仍然有用。但枚举和一些更好的打字可能会很好对于args。

1 个答案:

答案 0 :(得分:3)

  

我很好奇C ++库现在是否有更多的C ++方式来访问这些函数而不必包含大量的C头文件?

他们没有,因为这些功能是由POSIX提供的,而不是该语言的功能。然而,提供的是iostream抽象(C ++ 98,第27章),它们完成了“第2节”的许多常见功能open() / close() / {{1 } / read()来电。

C ++ 11提供了更多的抽象,涵盖了POSIX,Windows(等)API提供的更多功能。