【问题标题】:Calling functions from section 2 of the manual in C++在 C++ 中调用手册第 2 节中的函数
【发布时间】:2013-08-15 20:31:11
【问题描述】:

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 等,较低级别的函数仍然很有用。但是枚举和一些更好的类型可能会很好对于 args。

【问题讨论】:

  • C++ 方式是什么意思?当有这么多的wasys可供选择时。也许你的意思是 > ?

标签: c++ linux system-calls


【解决方案1】:

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

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

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

【讨论】:

  • 如文档所述here?也许fstream 也是?
  • 是的,就是这些。
猜你喜欢
  • 1970-01-01
  • 2011-05-17
  • 2013-11-28
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多