在* nix中使用开放系统调用有什么用

时间:2012-08-25 14:10:42

标签: c linux unix file-io

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

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

3 个答案:

答案 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 - 用于截断任何不需要的流。请考虑您在终端中运行命令,该命令将在终端中打印stdoutstderr。如果要截断错误,我们可以运行cmd 2>/dev/null之类的命令。如果您只想在编译期间看到编译器警告,我们可以像make 1> /dev/null一样运行。