fcntl的使用(转)
来源:互联网 发布:asp甩棍淘宝 编辑:程序博客网 时间:2024/05/17 06:17
1、获取文件的flags,即open函数的第二个参数:
flags = fcntl(fd,F_GETFL,0);
2、设置文件的flags:
fcntl(fd,F_SETFL,flags);
3、增加文件的某个flags,比如文件是阻塞的,想设置成非阻塞:
flags = fcntl(fd,F_GETFL,0);
flags |= O_NONBLOCK;
fcntl(fd,F_SETFL,flags);
4、取消文件的某个flags,比如文件是非阻塞的,想设置成为阻塞:
flags= fcntl(fd,F_GETFL,0);
flags&= ~O_NONBLOCK;
fcntl(fd,F_SETFL,flags);
获取和设置文件flags举例::
#include<stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include<error.h>
char buf[500000];
int main(int argc,char *argv[])
{
int ntowrite,nwrite;
const char *ptr ;
int flags;
ntowrite = read(STDIN_FILENO,buf,sizeof(buf));
if(ntowrite <0)
{
perror("read STDIN_FILENO fail:");
exit(1);
}
fprintf(stderr,"read %d bytes\n",ntowrite);
if((flags =fcntl(STDOUT_FILENO,F_GETFL,0))==-1)
{
perror("fcntl F_GETFL fail:");
exit(1);
}
flags |=O_NONBLOCK;
if(fcntl(STDOUT_FILENO,F_SETFL,flags)==-1)
{
perror("fcntl F_SETFL fail:");
exit(1);
}
ptr = buf;
while(ntowrite > 0)
{
nwrite = write(STDOUT_FILENO,ptr,ntowrite);
if(nwrite == -1)
{
perror("write file fail:");
}
if(nwrite > 0)
{
ptr += nwrite;
ntowrite -= nwrite;
}
}
flags&= ~O_NONBLOCK;
if(fcntl(STDOUT_FILENO,F_SETFL,flags)==-1)
{
perror("fcntl F_SETFL fail2:");
}
r
deenug20130521
FROM:http://blog.sina.com.cn/s/blog_692916ad0100xogq.html
- fcntl的使用(转)
- fcntl函数的使用
- fcntl函数的使用
- fcntl的使用
- fcntl的使用
- fcntl 的使用
- fcntl 的使用
- fcntl的使用
- fcntl的使用
- fcntl的使用
- fcntl函数的使用
- fcntl的使用
- fcntl使用 (转)
- fcntl使用 (转)
- linux 下fcntl的使用
- linux 下fcntl的使用
- linux 下fcntl的使用
- 记录锁的使用 fcntl
- HDU5142 NPY and FFT && BestCoder Round #22 1001
- VLC Framework
- 叶黄素,眼睛保健必不可少。
- JQuery学习二:.attr()
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
- fcntl的使用(转)
- android switch语句case expressions must be constant expressions
- 《C程序设计语言》练习2-1答案
- sqlite3_get_table()
- 文本文件和二进制文件的区别
- 草根旺城:创业到底靠什么成功?
- 写一个函数返回参数值为1的个数
- 黑马程序员——Java基础---多线程(下)--第12天--第142-151集
- eclipse中在整个工程中查找一个字符串的步骤