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