UNIX下文件open的思考---为什么返回3

fzyz_sb 发布于 2013/11/03 16:15
阅读 512
收藏 0

在学习APUE的时候,遇到open这个函数,于是编写了下列的代码:

#include "apue.c"
#include <fcntl.h>

int main( void )
{
	int temp = open("infile", O_RDONLY );
	printf("%d\n", temp );
	printf("%d---%d---%d\n", O_RDONLY, O_WRONLY, O_RDWR );
	exit( 0 );
}
程序输出:

[root@localhost apue]# cc test.c
[root@localhost apue]# ./a.out
3
0---1---2
这里的3代表的是什么,文件的权限吗?当我用chmod把文件给为000的时候,依旧是返回3:

[root@localhost apue]# chmod 000 infile
[root@localhost apue]# ll infile
----------. 1 fzyzvoler fzyzvoler 72 Nov  2 17:18 infile
[root@localhost apue]# cc test.c
[root@localhost apue]# ./a.out
3
0---1---2
这是为什么呢?请大神指导一下。

加载中
0
Finlay
Finlay

3 是文件描述符。

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。

http://baike.baidu.com/link?url=kT1mpR-UV1NaVsF183vv1-Sc5Z-vhpOqS5KcJQZWTMqBZA-iIRjFSy6oTtrf_NuUUSTDIaTeGvM0cGtWpo7pOq

0
徐永强
徐永强
前3个被标准输入输出和错误给占了
fzyz_sb
fzyz_sb
所以意思是0,1,2被输入,输出,错误占用了,于是新建的文件就被定义为文件描述符3???
0
风之轮
风之轮

楼上正解

0
中山野鬼
中山野鬼

引用来自“xuyongqang”的答案

前3个被标准输入输出和错误给占了
都是古老的问题和答案。哈。
中山野鬼
中山野鬼
回复 @雷朝建 : 基础当然重要拉,不过基础的东西不是代表一开始要学,因为学而无用,最终还是忘,哈。自己多做例子吧。
fzyz_sb
fzyz_sb
可能个人认为基础重要吧,所以准备转向Linux方向走.初学者,见笑了^_^
返回顶部
顶部