我什么时候应该使用perror,什么时候不使用? 我看一下example,我认为这个例子可能会更好,例如没有关于本地化,我可以传递给perror的内容,或者如果我实现像命令行解释器或其他一些东西我应该使用perror C程序..
答案 0 :(得分:3)
我什么时候应该使用perror而不是什么时候?
如果希望描述与 errno 相对应的错误,请使用perror写入stderr。
我看一下这个例子,我认为这个例子可能会更好 实例没有关于本地化的信息
这个例子很好。论证没有地方;如果你想要那里的地方,你需要自己设计;毕竟,它是你的程序参数......如果你仔细阅读说明,你会注意到strerror的链接。此页面告诉您如何通过实现处理错误消息的位置。
我可以传递给perror
实际上,该页面会告诉您确切传递的内容:“...... s指向的字符串......”。字符串是一系列字符,终止于第一个'\ 0'。不要忘记:“字符串文字”会以静默方式转换为数组,当您将数组传递给函数时,该数组会以静默方式转换为指针。
如果我应该使用perror,如果一个工具有点命令行 或其他一些C程序。
stderr不是命令行开发所独有的。考虑守护进程:如果将进程作为守护进程添加到crontab,cron.d会将stderr发送到您的电子邮件。此外,各种GUI工具包可能 freopen stderr,以便将错误消息写入 stderr.log 或其他内容......
答案 1 :(得分:2)
perror
的主要优点是它可以生成标准化消息。例如,如果您尝试fopen
无法找到的文件,则消息始终“没有此类文件或目录”。这样可以更好地理解错误消息(而不是让很多程序生成不同的消息来说同样的事情),而且还可以使用通用实用程序来搜索错误消息/类型。
不使用它的唯一真正原因是,您使用的系统或库调用未设置errno
。如果标准输出不可用,您仍然可以使用strerror
。