perror和fprintf与stderr有什么区别?

时间:2016-11-18 12:50:21

标签: c linux

我知道两者都可以作为错误消息,

perror(" ");
fprintf(stderr, " ");

但它们之间真正的区别是什么?每个的优点/缺点是什么?

1 个答案:

答案 0 :(得分:4)

the perror() standard

  

perror()函数应映射通过的访问错误号   符号errno到语言相关的错误消息,应该是   写入标准错误流如下:

     
      
  • 首先(如果s不是空指针且s指向的字符不是空字节),则s指向的字符串后跟a   <结肠>和一个< space>。

  •   
  • 然后是错误消息字符串,后跟< newline>。

  •   
     

错误消息字符串的内容应与那些内容相同   由strerror()以参数errno返回。

所以,

perror( " " );

会发出类似

的内容
 : invalid argument

stderr,具体取决于errno的当前值。

但是

fprintf( stderr, " " );

只会向stderr发出一个空格字符,而不会打印当前errno值的字符串表示。

隔离的

fprintf( stderr, " " );非常无用。 perror( " " );将提供有关errno的当前值的数据。