0

Linuxプログラミングは初めてです。私は非常に単純なプログラムを書きました:

#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 でした。この値はもっと大きな数値にする必要があることを思い出しました。このプログラムにエラーがある場合は?

4

2 に答える 2

8

これは正常のようです。プロセスは、事前に開いたファイル記述子から始まります。stdinの場合は0、stdoutの場合は1、stderrの場合は2です。開く新しいファイルはすべて3で始まる必要があります。ファイルを閉じると、そのファイル記述子番号が新しいファイルを開くときに再利用されます。

于 2012-04-27T15:17:18.190 に答える
2

前のファイルを閉じずに別のファイルを開くと、4、5などになります。

詳細については、http: //wiki.bash-hackers.org/howto/redirection_tutorialにアクセスしてください。bash用ですが、全体的な考え方は普遍的です。

于 2012-04-27T15:20:59.633 に答える