用 C 语言写个程序输出 Hello world!当输出被重定向到 devfull 时报错。
以下是一个可能的解决方案:
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main() {
if (isatty(fileno(stdout))) {
printf("Hello world!\n");
} else {
fprintf(stderr, "Error: Output redirected to /dev/full!\n");
errno = ENOSPC;
return -1;
}
return 0;
}
这个程序首先检查标准输出是否连接到终端,如果是,则打印 "Hello world!";如果不是,则在标准错误输出中打印一个错误消息,并返回一个非零退出码。同时,它也将 errno 设置为 ENOSPC,这是一个表示磁盘已满的错误码,以便与其他程序兼容。
请注意,这个程序只能检测到输出是否被重定向到 /dev/full,而不能检测到其他类型的输出重定向。如果需要检测其他类型的输出重定向,可能需要使用更高级的技术,例如 ioctl() 或 fstat()。
原文地址: https://www.cveoy.top/t/topic/Cq7 著作权归作者所有。请勿转载和采集!