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

这似乎很正常。进程以预先打开的文件描述符开始:0 表示标准输入,1 表示标准输出,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 回答