fcntl即F_SETFL,F_GETFL的使用,设置文件的flags
2012-11-20 11:31
459 查看
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_SETFL,F_GETFL的使用,设置文件的flags
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags,阻塞设置成非阻塞,非阻塞设置成阻塞(这连个在server开发中可以封装为基本函数)
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags,阻塞设置成非阻塞,非阻塞设置成阻塞(这连个在server开发中可以封装为基本函数)
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags
- 使用 fcntl 函数 获取,设置文件的状态标志
- 第七篇:使用 fcntl 函数 获取,设置文件的状态标志
- Linux:使用ulimit设置文件最大打开数
- 64位ubuntu下使用32位软件时,明明设置好了环境变量仍提示找不到文件
- springMVC下自定义配置文件的设置与使用
- 使用游标收缩数据库日志文件并调整数据库属性选项栏部分设置
- 使用Policy文件来设置Java的安全策略
- 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta
- mybatis 使用jdbc.properties文件设置不起作用
- 怎样设置Samba文件服务器以使用Windows客户端
- GenyMotion 使用问题: 输入法设置 + 软件安装卸载 + 文件共享
- Linux学习笔记14——使用fcntl实现文件锁定
- Ubuntu IP系统配置文件使用命令设置地址
- Linux:使用ulimit设置文件最大打开数<转>