0

Unix 手册的第 2 节涵盖了系统调用(尽管它们实际上可能由系统 libc 实现 -fork(2)例如在 Linux 上)。下面是一个非常愚蠢的例子,它调用了open(2)and 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 很好.

4

1 回答 1

3

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

他们没有,因为这些功能是由 POSIX 提供的,而不是该语言的特性。然而,提供的是iostream抽象(C++98,第 27 章),它们执行“第 2 节”/// 调用的许多open()常见功能 close()read()write()

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

于 2013-08-15T20:36:51.763 回答