我正在处理一项任务,其中程序将文件描述符作为参数(通常来自 exec 调用中的父级)并从文件中读取并写入文件描述符,在我的测试中,我意识到该程序可以工作从命令行,如果我使用 0、1 或 2 作为文件描述符,则不会给出错误。这对我来说很有意义,只是我可以写信给标准输入并让它显示在屏幕上。
对此有解释吗?我一直认为标准输入/标准输出有一些保护,你当然不能从标准输出 fprintf 到标准输入或 fgets。
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
char message[20];
read(STDOUT_FILENO, message, 20);
write(STDIN_FILENO, message, 20);
return 0;
}