|
发表于 2003-10-18 16:57:23
|
显示全部楼层
[php]
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main()
{
for(int i =0;i<10;i++){
char s[10];
int result = fcntl(i,F_GETFL);
if(result == -1)
std::cout<<"get fd "<<i<<"file flag fail"<<std::endl;
else switch(result &O_ACCMODE){
case O_RDONLY:
std::cout<<"get fd "<<i<<" sucess,readonly"<<std::endl;
break;
case O_WRONLY:
std::cout<<"get fd "<<i<<" sucess,write only"<<std::endl;
break;
case O_RDWR:
std::cout<<"get fd "<<i<<" sucess,read write"<<std::endl;
if(write(i," ",2) != 2)
perror("write fd fail");
else
std::cout<<"write fd succeed"<<std::endl;
std::cout<< "read 1 byte"<<std::endl;
if(read(i,s,1)!=1)
perror("read fd fail");
else
std::cout<<"read fd succed"<<s[0]<<std::endl;
break;
default:
std::cout<<"get fd "<<i<<" sucess,flag is:"
<<(result&O_ACCMODE)<<std::endl;
break;
}
}
return 0;
}
[/php]
上面写了个程序测试了一下
确实是可读可写的
只是写得不是很完整
if(write(i," ",2) != 2) //这里让输出再多点看看是不是有
perror("write fd fail");
else
std::cout<<"write fd succeed"<<std::endl;
std::cout<< "read 1 byte"<<std::endl;
if(read(i,s,1)!=1)//这里也再多读点 看下面的结果会怎样
perror("read fd fail");
else
std::cout<<"read fd succed"<<s[0]<<std::endl;
谁有时间的话修改一下好了 |
|