引数を指定するとstdoutをファイルにリダイレクトするか、stdinをファイルから読み込みます。これを行うには、stdoutまたはstdinに関連付けられているファイル記述子を閉じます。そのファイルを開くと、ただ閉じたディスクリプタの下に開きます。これはうまくいきますが、問題が解決すると、stdoutとstdinを元に戻す必要があります。stdoutとstdinファイル記述子を閉じた後で再オープン
私がstdoutのためにできることはopen( "/ dev/tty"、O_WRONLY)です。しかし、なぜこれが機能するのか分かりませんし、もっと重要なのは、stdinの同等のステートメントがわからないことです。
だから私は標準出力
close(1);
if (creat(filePath, O_RDWR) == -1)
{
exit(1);
}
と
close(0);
if (open(filePath, O_RDONLY) == -1)
{
exit(1);
}
man 'dup'と' dup2' –
'O_RDWR'は' open' 'flags'パラメータの' creat' 'mode'パラメータではありません。 –