在Linux系统中,标准错误的文件描述符通常是2。如果您的代码中的标准错误文件描述符不等于2,您可以使用以下方法更正:
#include
#include
#include
int main() {
int new_stderr_fd = open("error.log", O_WRONLY | O_CREAT, 0644); // 打开一个新的文件描述符来替代标准错误
if (new_stderr_fd == -1) {
perror("open");
return 1;
}
if (dup2(new_stderr_fd, 2) == -1) { // 将标准错误的文件描述符更改为新的文件描述符
perror("dup2");
return 1;
}
fprintf(stderr, "This is a test error message.\n"); // 将错误消息写入新的标准错误文件描述符
close(new_stderr_fd); // 关闭新的文件描述符
return 0;
}
在上面的示例中,我们将标准错误的文件描述符更改为指向名为"error.log"的新文件描述符。然后,我们使用fprintf()函数将错误消息写入新的标准错误文件描述符。关闭新的文件描述符以确保资源的正确释放。
./your_program 2> error.log
上述命令将标准错误重定向为写入到名为"error.log"的文件中。这样,您的程序中的所有错误消息都将写入该文件。
请注意,这些解决方法是针对C语言和Linux系统。如果您使用的是其他编程语言或操作系统,请提供相关信息以便我们提供更适合的解决方案。
上一篇:标准C输出不会在控制台打印