Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1317565
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: LINUX

2012-03-12 09:28:00

文件描述符
任何打开的文件都将被分配一个唯一标识该打开文件的文件描述符,为一个大于等于 0
的整数。系统启动后,默认打开的文件流有标准输入设备( STDIN)、标准输出设备( STDOUT)
和标准错误输出设备(STDERR),其文件描述符分别为 0、1、2。以后打开的文件的文件描
述符分配依次增加。使用 fileno()函数可以返回一个流对应的文件描述符。对于标准设备的文
件描述符定义如下:
/* Standard file descriptors. */
#define STDIN_FILENO 0 //标准输入设备
#define STDOUT_FILENO 1 //标准输出设备
#define STDERR_FILENO 2 //标准错误输出设备
下面是一个打印打开文件描述符的示例程序,在此程序中使用了 open()函数打开文件,
关于此函数的使用请参阅后续小节内容。
[root@localhost yangzongde]# cat fileno_example.c
#include
#include
#include
#include
#include
#include

int main(int argc,char *argv[])
{
int fp1,fp2;

printf("stdin is:\t%d\n",fileno(stdin)); //标准输入设备
printf("stdout is:\t%d\n",fileno(stdout)); //标准输出设备
printf("stderr is:\t%d\n",fileno(stderr)); //标准错误输出设备

if((fp1=open("/etc/xinetd.d/cvs",O_WRONLY))==-1)//打开文件
{
perror("open");
exit(EXIT_FAILURE);
}

if((fp2=open("/etc/xinetd.d/kshell",O_WRONLY))==-1) //打开文件
{
perror("open");
exit(EXIT_FAILURE);
}
printf("cvs file is :\t%d\n",fp1);//打印文件描述符
printf("kshell file is:\t%d\n",fp2); //打印文件描述符
close(fp1);
close(fp2);
return 0;
}
[root@localhost yangzongde]# gcc -o fileno_example fileno_example.c
[root@localhost yangzongde]# ./fileno_example
stdin is: 0
stdout is: 1
stderr is: 2

cvs file is : 3
kshell file is: 4
1.2 、

 

 

转自

阅读(1855) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~