2

我什么时候应该使用 perror 什么时候不应该使用?我看了一下这个例子,我认为这个例子可能会更好,例如没有关于本地化的内容,我可以传递给 perror 的内容,或者如果我实现命令行解释器或其他 C 程序之类的东西是否应该使用 perror..

4

2 回答 2

3

我什么时候应该使用 perror 什么时候不应该使用?

当您想要描述与写入 stderr的errno相对应的错误时,请使用 perror。

我看了一下这个例子,我认为这个例子可能会更好,例如没有什么关于本地化的

这个例子很好。论点没有地点;如果你想要那里的位置,你需要自己设计;毕竟,这是您的程序参数...如果您仔细阅读说明,您会注意到指向strerror的链接。此页面告诉您错误消息的位置是如何由实现处理的。

我可以传递给 perror 什么

实际上,该页面确切地告诉您要传递的内容:“... s 指向的字符串...”。字符串是在第一个 '\0' 处终止的字符序列。不要忘记:“字符串文字”会默默地转换为数组,当您将数组传递给函数时,该数组会默默地转换为指针。

如果我应该使用 perror 来实现类似于命令行或其他 C 程序的东西。

stderr 并不是命令行开发所独有的。考虑守护进程:如果您将进程作为守护进程添加到您的 crontab,cron.d 会将 stderr 发送到您的电子邮件。此外,各种 GUI 工具包可能会freopen stderr 以便将错误消息写入stderr.log或其他东西......

于 2013-03-20T18:12:26.837 回答
2

的主要优点perror是它产生标准化的消息。例如,如果您尝试fopen查找无法找到的文件,则消息始终为“没有这样的文件或目录”。这使得错误消息更好地被理解(而不是让许多程序产生不同的消息来说同样的事情),而且它还允许使用通用实用程序来搜索错误消息/类型。

不使用它的唯一真正原因是您使用的系统或库调用未设置errno。如果标准输出不可用,您仍然可以使用strerror

于 2013-03-20T18:41:27.617 回答