博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fcntl,F_GETFL,F_SETFL,flags
阅读量:6998 次
发布时间:2019-06-27

本文共 1781 字,大约阅读时间需要 5 分钟。

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 
#include
#include
#include
#include
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:"); } return 0;}

转载于:https://www.cnblogs.com/muahao/p/6055056.html

你可能感兴趣的文章
学习Perl 第2讲
查看>>
使用AJAX的最简单示例
查看>>
JAVA常用类
查看>>
Java SE 7新特性:创建泛型实例时自动类型推断
查看>>
面试问题之:JSON是什么?
查看>>
创建plist
查看>>
性能测试的几种类型
查看>>
重庆工业赋能创新中心项目签约并正式揭牌
查看>>
如何正确处理 InterruptedException
查看>>
程序员必备系列:开发工具的安装和使用
查看>>
G7在实时计算的探索与实践
查看>>
怎么在电脑上进行屏幕录像?电脑录屏的方法
查看>>
手机照片误删怎么恢复?别说,这招还真管用
查看>>
数领科技|solidworks教程:solidworks快捷键汇总
查看>>
ansible自动部署 zabbix-agent 的模块
查看>>
MYSQL 分组
查看>>
Python新版本手动安装
查看>>
postgresql 9.6 安装并配置远程连接
查看>>
PC电源选购常见误区解惑
查看>>
使用LVS或者阿里云的SLB后如何获取访客真实的IP地址
查看>>