1、void perror(const char *s); perror ("open_port");
#include <stdio.h>
perror ( )用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量error的值来决定要输出的字符串。
2、char * strerror(int errnum);
#include <string.h>
此函数将errnum(它通常就说errno值)映射为一个出错信息字符串,并返回此字符串的指针。
3、区别
perror是将errno对应的错误消息的字符串打印到标准错误输出上,即stderr或2上,若你的程序将标准错误输出重定向到/dev/null,那就看不到了,就不能用perror了。而 strerror的作用只是将errno对应的错误消息字符串返回,要怎样处理完全由你自己决定。通常我们选择把错误消息保存到日志文件中,即写文件,所以通常可以用fprintf(fp, "%s", strerror(errno))将错误消息打印到fp指向的文件中。其中perror中errno对应的错误消息集合跟strerror是一样的,也就是说不会漏掉某些错误。
原文
http://www.cnblogs.com/zjfdbz/archive/2012/12/16/2821061.html