2012-04-27 6 views
0

私はLinuxプログラミングの初心者です。私は非常に簡単なプログラムを書いた:linuxプログラミング:ファイルディスクリプタの値は常に3です

#include stdio.h 
#include fcntl.h 
#include sys/ioctl.h 
#include mtd/mtd-user.h 
#include errno.h 

int main(void) 
{ 
    int fd; 

    fd = open("test.target", O_RDWR); 
    printf("var fd = %d\n", fd); 
    close(fd); 
    perror("perror output:"); 

    return 0; 
} 

test.targetはtouchコマンドを使うだけで作成されます。プログラムの出力は次のようになります。

var fd = 3 
perror output:: Success 

私は他のファイルを開くしようとした、およびファイル記述子が常に3.Iはそれが価値だ思い出した大きなnumber.Ifする必要があります。このプログラムは、いくつかのエラーを持っていますか?

+0

あなたはそれを解決したと言いましたが、解決策は何ですか?あなたはあなたの問題を解決した答えを受け入れるべきです。 –

+0

申し訳ありません。私はここに新しいです、そして、私は今答えを受け入れました。 – user1361391

答えて

8

これは正常です。プロセスは、オープンされたファイル記述子で開始します.0はstdin、1はstdout、2はstderrです。開いた新しいファイルはすべて3で始まる必要があります。ファイルを閉じると、そのファイル記述子の番号は開いた新しいファイルに再利用されます。

関連する問題