0
私は標準的なI/Oを勉強して、1つの質問があります。閉じる(0)の後にstdinを開くことができますか?
#include <stdio.h>
int main(){
void *mem = malloc(0x80);
close(0)
/*
something code (solution)
*/
read(0,mem,0x80);
}
上記のコードでは、開けられますか? 私はopen( '/ dev/tty')と思っていました。 。 しかし、それは完全にstdinを開こうとしていないようです。 私は私の見解では
'stdin_filenoは実際にはディスク上のファイルのFDであり、そのようなFDの最後です。ファイルを閉じると、ファイルが削除されることがあります。したがって、原則として、同じファイルを指し示すクローズドFDを復元する方法はありません。もちろんFD0を新しい*ファイルに再び開くことができます。 –
@KerrekSBだから、プログラムの開始時にstdinを作成するには? –
@オウジン: 'dup'や' dup2'を避ける理由は何ですか? –