以下是一个可能的解决方案:

#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()

用 C 语言写个程序输出 Hello world!当输出被重定向到 devfull 时报错。

原文地址: https://www.cveoy.top/t/topic/Cq7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录