- 论坛徽章:
- 0
|
#include "apue.h"
#include <fcntl.h>
int main(int argc,char *argv[]){
int fd1=0;
int val;
char buf[]="dsad\n";
if((fd1=open("tt",O_RDWR | O_APPEND,FILE_MODE))<0){
printf("error creat\n");
exit(-1);
}
printf("fd1:%d\n",fd1);
if(write(fd1,buf,5)!=5){
printf("write error");
exit(-14);
}
if((val=fcntl(fd1,F_GETFL,0))<0){
printf("fcntl error for fd %d\n",fd1);
exit(-1);
}
switch (val & O_NONBLOCK){
case O_RDONLY:
printf("read only");
break;
case O_WRONLY:
printf("write only");
break;
case O_RDWR:
printf("read write");
break;
default:
{
printf("unknow access mode");
exit(-3);
}
}
if(val & O_APPEND)
printf(",append");
if(val & O_NONBLOCK)
printf(",nonblocking");
#if defined(O_SYNC)
if(val & O_SYNC)
printf(",synchronous writes");
#endif
#if !defined(_POSIX_C_SOURCE) && defined (O_FSYNC)
if(val & O_FSYNC)
printf(",synchronous writes ");
#endif
putchar('\n');
exit(0);
}
输出是read only,append
我觉的应该是read write,append
不知是和问题
还有我感觉用fcntl改文件标识的话,不是什么状态就可以改的 |
|