1

是什么open()?这是做什么的?

if (open("/dev/null", O_RDWR) < 0) {
  die("error=open: %m");
}
4

3 回答 3

2

它会打开一个名为 /dev/null 的设备,该设备会丢弃写入其中的任何内容。基本上是一个废纸篓。

因此代码以读/写模式打开该设备。如果打开失败,它会调用一个函数,该函数die会打印您看到的错误文字以及从 strerror(errno) 返回的系统错误消息并退出程序。您看到传递给的文字die可能只是printf.

从 man 3 printf

m(Glibc 扩展。)strerror(errno) 的打印输出。不需要任何参数。

似乎没有一个名为die();的 glibc 函数。想必是代码片段作者定义的函数,想必是报错后退出函数。但是,我们只能做出有根据的猜测。

于 2012-08-25T14:20:18.190 回答
1

您应该man 2 open在终端窗口中查看,或在 Google 中查看。

open()函数用于打开文件并分配文件描述符。如果open()失败,则返回负值。

于 2012-08-25T14:15:21.593 回答
1

open("filename", O_RDWR)相当于fopen("filename", "w")

/dev/null - 这用于截断任何不需要的流。考虑您正在终端中运行一个命令,该命令将在终端中stdout打印stderr。如果你想截断错误,我们可以运行类似的命令cmd 2>/dev/null。如果你想在编译过程中只看到编译器警告,我们可以像make 1> /dev/null.

于 2012-08-25T15:17:27.233 回答