2007年8月20日星期一

fcntl函数(查看/设置文件状态)

fcntl函数(查看/设置文件状态)

这个函数主要是供用户查看或是设置一个被打开的状态。它的使用格式如下:

status = fcntl (hand, option, mode )

上述fcntl函数调用中,各参数定义如下:

l handle:已打开的文件句柄。

l option:一般可以是下列两种值:

n F_GETFL:表示读取文件状态值。

n F_SETFL:表示设置文件状态值。

(注意:F_GETFLF_SETFL都被定义在fcntl.h

l mode:如果optipnF_GETFL,则这个参数值可以是任意值。如果是F_SETFL,则参数值可以是下列值:

n O_WRONLY:将文件设置成只写状态。

n O_RDWR 将文件设置成读写状态。

n O_RDONLY:将文件设置成只读状态。

n status:函数会将调用结果赋给status,如运行失败,则status的值会被设成-1

Code

#include "lyl.h"

main(int argc,char *argv[])

{

int handle ;

int ret_code ;

int dummy ;

if ( argc != 2 )

{

printf("sorry input error!\n") ;

exit(1) ;

}

handle = open(argv[1],O_WRONLY) ;

ret_code = fcntl(handle,F_GETFL,dummy) ;

/* ret_code = fcntl(handle,F_SETFL,O_WRONLY) ;*/

/*print the file attribute打印文件属性*/

/*用位运算指令"&"测试返回的文件状态值*/

if ( ret_code & O_RDWR )

{

printf("The file[%s] is read and write\n",argv[1]) ;

}

else if ( ret_code & O_WRONLY )

{

printf("The file[%s] is write only \n",argv[1]) ;

}

else

{

printf("The file[%s] is read only\n",argv[1]) ;

}

exit(0) ;

}

程序执行结果:

$ls -l t1.txt

-rwxr-xr-x 1 test staff 0 Sep 15 15:14 t1.txt

$fcntl t1.txt

The file[t1.txt] is write only

创建于: 2006-09-20 12:32:56,修改于: 2006-09-20 12:32:56,已浏览1004次,有评论5条




网友评论

网友:多多 时间:2006-11-03 10:11:56 IP地址:221.239.61.★



你错了!
如果是F_SETFL,则参数值可以是下列值:
O_WRONLY:将文件设置成只写状态。
O_RDWR: 将文件设置成读写状态。
O_RDONLY:将文件设置成只读状态。
实际上参数值并不是上面的值, 你怎么能误人子弟?
应该是
O_APPEND, O_NONBLOCK, O_ASYNC, O_DIRECT




网友:xiaoJ 时间:2006-11-29 16:44:04 IP地址:58.246.25.★



网上的东西本来就需要自己分别的, 楼上是好心 ,可是楼主也是好心啦 




网友:xxx 时间:2006-12-14 11:00:05 IP地址:166.111.65.★



查看fcntl.h文件不就可以辨别真伪了吗? 




网友:cocoa 时间:2006-12-14 14:41:05 IP地址:61.183.222.★



呵呵,我是楼主,这个网站把我的修改权限改了,到现在,我自己也只能看不能改了.................郁闷啊 




网友:本站网友 时间:2007-02-08 16:55:46 IP地址:222.76.228.★



其实一个是文件访问模式,如读、写、读写等,一个是文件状态标志,如追加、阻塞、异步等等。所以楼主并未错,只是未表述清楚而已。 

没有评论: