私は、プログラムがファイル記述子を引数として (通常は exec 呼び出しの親から) 受け取り、ファイルから読み取り、ファイル記述子に書き込む割り当てに取り組んでいました。私のテストでは、プログラムが機能することに気付きました。ファイル記述子として 0、1、または 2 を使用してもエラーは発生しません。標準入力に書き込んで画面に表示できることを除いて、それは私にとって理にかなっています。
これについての説明はありますか?stdin/stdoutには何らかの保護があるといつも思っていました.fprintfをstdinに、またはfgetsをstdoutから実行することはできません。
#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;
}