是什么open()
?这是做什么的?
if (open("/dev/null", O_RDWR) < 0) {
die("error=open: %m");
}
它会打开一个名为 /dev/null 的设备,该设备会丢弃写入其中的任何内容。基本上是一个废纸篓。
因此代码以读/写模式打开该设备。如果打开失败,它会调用一个函数,该函数die
会打印您看到的错误文字以及从 strerror(errno) 返回的系统错误消息并退出程序。您看到传递给的文字die
可能只是printf
.
从 man 3 printf:
m(Glibc 扩展。)strerror(errno) 的打印输出。不需要任何参数。
似乎没有一个名为die()
;的 glibc 函数。想必是代码片段作者定义的函数,想必是报错后退出函数。但是,我们只能做出有根据的猜测。
您应该man 2 open
在终端窗口中查看,或在 Google 中查看。
该open()
函数用于打开文件并分配文件描述符。如果open()
失败,则返回负值。
open("filename", O_RDWR)
相当于fopen("filename", "w")
/dev/null - 这用于截断任何不需要的流。考虑您正在终端中运行一个命令,该命令将在终端中stdout
打印stderr
。如果你想截断错误,我们可以运行类似的命令cmd 2>/dev/null
。如果你想在编译过程中只看到编译器警告,我们可以像make 1> /dev/null
.