我在做一个作业,其中一个程序接受文件描述符作为参数(通常是通过exec调用从父进程中获得),从文件中读取并写入文件描述符。在我的测试中,我意识到如果将0、1或2作为文件描述符,则该程序可以从命令行正常工作且不会出错。 这很合理,但我可以将内容写入stdin并在屏幕上显示。这是什么原因?我一直以为stdin / stdout上有保护措施,肯定不能fprintf到stdin或从stdout获取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;
}
fprintf
写入stdin
(尽管我在标准中找不到任何明确禁止它的内容),但这对于您是否可以向文件描述符 0 写入write
没有任何影响。 - paxdiablo