我是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 仅使用触摸命令创建。程序的输出是:
var fd = 3
perror output:: Success
我试着打开其他文件,文件描述符总是3.我记得它的值应该是一个更大的数字.如果这个程序有什么错误?
3条答案
按热度按时间pod7payv1#
这似乎很正常。进程从预先打开的文件描述符开始:0表示标准输入,1表示标准输出,2表示标准错误。打开的任何新文件都应以3开头。如果您关闭一个文件,该文件描述符编号将重新用于您打开的任何新文件。
pnwntuvh2#
如果您打开另一个文件而不关闭前一个文件,则将是4,5,依此类推。
欲了解更多信息,请访问http://wiki.bash-hackers.org/howto/redirection_tutorial这是为bash,但整个想法是通用的。
byqmnocz3#
你可以创建两个不同的文件(a.txt和b.txt),当你使用open()时,它会得到不同的文件描述符,对我来说,我得到了3,4
因为0,1,2有默认值和意义