linux编程fcntl获取和设置文件状态
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h> #define ERR_EXIT( m ) \
do \
{ \
perror( m ); \
exit( EXIT_FAILURE ); \
}while( 0 ) //设置某个文件状态
void set_flag( int fd, int flags );
//清除某个文件状态
void clear_flag( int fd, int flags ); int main( int argc, char* argv[] ) { char buf[64] = { 0 };
int nread; //设置非阻塞状态
set_flag( 0, O_NONBLOCK );
//清除非阻塞状态, 读取标准输入又变成阻塞
clear_flag( 0, O_NONBLOCK );
nread = read( 0, buf, 64 );
if( -1 == nread ) {
ERR_EXIT( "获取输入失败" );
}
printf( "buf=%s\n", buf ); return 0;
} void set_flag( int fd, int flags ) {
int oldflag;
oldflag = fcntl( fd, F_GETFL, 0 );
if( -1 == oldflag ) {
ERR_EXIT( "获取原来的状态失败" );
} oldflag = oldflag | flags;
int ret = fcntl( fd, F_SETFL, oldflag );
if( -1 == ret ) {
ERR_EXIT( "设置新的文件状态失败" );
}
} void clear_flag( int fd, int flags ) {
int oldflag;
oldflag = fcntl( fd, F_GETFL, 0 );
if( -1 == oldflag ) {
ERR_EXIT( "获取原来的状态失败" );
}
oldflag = oldflag & ~flags;
int ret = fcntl( fd, F_SETFL, oldflag );
if( -1 == ret ) {
ERR_EXIT( "设置新的文件状态失败" );
}
}
linux编程fcntl获取和设置文件状态的更多相关文章
- linux编程fcntl获取和设置文件锁
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types. ...
- 第七篇:使用 fcntl 函数 获取,设置文件的状态标志
前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢? 本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1 ...
- 使用 fcntl 函数 获取,设置文件的状态标志
前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢?本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1. ...
- fcntl获取和修改文件打开状态标志
[root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> ...
- linux下对普通用户设置文件访问控命令之setfacl
命令名 setfacl -设置文件访问控制列表 常用用法:setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名 命令的常用参数 -m 设置后续的acl参数给文件使用(常用). ...
- LinuxShell脚本编程基础5--数值,字符串,文件状态测试,((..))和[[..]]的使用
1.数值比较 ! /bin/bash echo "enter a score:" read num1 ] then echo "Very Good" elif ...
- Linux 编程学习笔记----ANSI C 文件I/O管理
转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 依据数据存储的方式不同,能够将文件分为文本文件和二进制文件 ...
- TDirectory.GetCreationTime、TDirectory.SetCreationTime获取和设置文件夹创建时间
使用函数: System.IOUtils.TDirectory.GetCreationTime//获取创建时间 System.IOUtils.TDirectory.SetCreationTime//设 ...
- TDirectory.GetAttributes、TDirectory.SetAttributes获取和设置文件夹属性
使用函数: System.IOUtils.TDirectory.GetAttributes//获取属性 System.IOUtils.TDirectory.SetAttributes//设置属性 注: ...
随机推荐
- RESTful 架构风格
在移动互联网的大潮下,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓R ...
- JS---DOM---part3课程介绍和part2复习
part3课程介绍 节点 为什么要学节点 节点的操作的相关属性------>作用 12行代码----有用的----熟练的问题, 节点的案例 元素的创建三种方式------重点的内容 为什 ...
- Flutter安装入门教程
### 前言 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...
- 知识图谱基础之RDF,RDFS与OWL 2
https://zhuanlan.zhihu.com/p/32122644 看过之前两篇文章([1](为什么需要知识图谱?什么是知识图谱?——KG的前世今生), [2](语义网络,语义网,链接数据和知 ...
- 检测服务器是否开启重协商功能(用于CVE-2011-1473漏洞检测)
背景 由于服务器端的重新密钥协商的开销至少是客户端的10倍,因此攻击者可利用这个过程向服务器发起拒绝服务攻击.OpenSSL 1.0.2及以前版本受影响. 方法 使用OpenSSL(linux系统基本 ...
- python怎么连接MySQL(附源码)
一.源码如下: import pymysql from pymysql.cursors import DictCursor # 创建数据库连接 localhost等效于127.0.0.1 conn = ...
- Java之ArrayList类(集合)
集合的由来 我们想存储多个数据,选择的容器可以是数组.而数组的长度是固定的,无法适应数据变化的需求.为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可 ...
- 利用Python进行数据分析-Pandas(第二部分)
上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段. 一.基本功能 1.重新索引 pandas对象的一个重要方法是r ...
- BOM介绍以及方法
BOM介绍和window对象的方法 一.BOM对象 (浏览器对象模型 BOM) 1.window alert() confirm() prompt() setInterval() setTimeo ...
- 【Web开发】到底什么是短链接
目录 什么是短链接 为什么使用短链接 节省发送的内容 提升用户体验 便于链接追踪,分析点击来源 一定程度上保护原始网站链接 短链接生成平台 短链接生成原理 参考 今天无意中看到一个名词--" ...