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。
答案 0 :(得分:3)
我很好奇C ++库现在是否有更多的C ++方式来访问这些函数而不必包含大量的C头文件?
他们没有,因为这些功能是由POSIX提供的,而不是该语言的功能。然而,提供的是iostream
抽象(C ++ 98,第27章),它们完成了“第2节”的许多常见功能open()
/ close()
/ {{1 } / read()
来电。
C ++ 11提供了更多的抽象,涵盖了POSIX,Windows(等)API提供的更多功能。