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

Calling functions from section 2 of the manual in C++

本文关键字:函数 调用 C++      更新时间:2023-10-16

Unix手册的第2节介绍了系统调用(尽管它们实际上可能由系统libc实现 - 例如在Linux上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 等,较低级别的函数仍然很有用。但是枚举和一些更好的类型可能对参数很好。

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

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

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