fcntl,F_GETFL,F_SETFL,flags
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:");
}
return 0;
}
fcntl,F_GETFL,F_SETFL,flags的更多相关文章
- fcntl F_GETFL
F_GETFL 我的理解是file get flag #include <stdio.h>#include <fcntl.h>#include <unistd.h> ...
- Socket,非阻塞,fcntl
一.fcntl 用以下方法将socket设置成为非阻塞方式 int flags = fcntl(socket,F_GETFL,0); fcntl(socket,F_SETFL,flags|O_NON ...
- 用fcntl()设置堵塞函数的堵塞性质
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- UNIX网络编程——fcntl函数
fcntl函数提供了与网络编程相关的如下特性: 非阻塞式I/O. 通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型. 信号驱动式I/O. 通过使用F ...
- 文件I/O实践(3) --文件共享与fcntl
文件共享 一个进程打开了两个文件 文件表条目(file-table-entry): 1.文件状态标志(file-status-flags): 读/写/追加/同步/非阻塞等; 2.当前文件偏移量 3.v ...
- fcntl获取和修改文件打开状态标志
[root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> ...
- Linux fcntl函数设置阻塞与非阻塞
转自http://www.cnblogs.com/xuyh/p/3273082.html 用命令F_GETFL和F_SETFL设置文件标志,比如阻塞与非阻塞 F_SETFL 设置给arg描述符 ...
- Linux fcntl函数详解
功能描述:根据文件描述词来操作文件的特性. 文件控制函数 fcntl -- file control 头文件: #include <unistd.h> #include ...
- [转]Linux系统调用--fcntl函数详解
功能描述:根据文件描述词来操作文件的特性. 文件控制函数 fcntl -- file control头文件: #include <unistd.h> #include & ...
随机推荐
- Unity 单元测试(PLUnitTest工具)
代码测试的由来 上几个星期上面分配给我一个装备系统,我经过了几个星期的战斗写完90%的代码. 后来策划告诉我需求有一定的改动,我就随着策划的意思修改了代码. 但是测试(Xu)告诉我装备系统很多功能都用 ...
- 使用openCV的静态库编译
转载请注明出处: http://www.cnblogs.com/sysuzyq/p/6183568.html By 少侠阿朱 摘要: 本文主要讲述如何使用opencv静态库进行编译,生成脱离openc ...
- 字典树-百度之星-Xor Sum
Xor Sum Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheu ...
- ZigBee心电传输(一)
第一次接触模拟的东西哈,也算是一次新的学习旅程以及对ZigBee的再一次探索吧. 首先是方案制定,以及采用芯片AD8232,这样节省了不少时间,把模拟的东西都搬到数字上了,不过还是需要学习不少模电知识 ...
- C#用注册表开机自动启动某某软件
代码如下: public static void chkAutoRun(bool isRun) { if (isRun)//开机自动启动 { try { RegistryKey runKey = Re ...
- display:inline和display:inline-block的区别
先来一张图: 测试代码: <!DOCTYPE html> <html> <head> <style> #bb { overflow: hidden; b ...
- WPF XAML之bing使用StringFormat(转)
释义 BindingBase.StringFormat 属性 获取或设置一个字符串,该字符串指定如果绑定值显示为字符串,应如何设置该绑定的格式. 命名空间: System.Windows ...
- jquery easyui-datagrid 如何清空数据
//清空原有数据 方法1: var item = $('#filegrid').datagrid('getRows'); if (item) { ; i >= ; i--) { var in ...
- CaseFile
出处 http://tools.kali.org/information-gathering/casefile CaseFile is the little brother to Maltego. I ...
- 第一篇文章-VS的Local DB数据库连接失败,创建实例失败的解决方案
用了很久的LocalDB了,不用装那么多的SQL组件感觉很不错,前不久调试代码碰到一个问题 ,VS突然就连接不上LocalDB了,琢磨了一下午,其实有个很简单的方法. 第一步,先找到SQL Local ...