文件描述符标志 文件状态标志

tb754136505 2012-07-18 11:22:00
最近在看unix环境高级编程……有两个地方不懂,百度了一圈也没找到满意答案!望大家不吝赐教!
文件描述符标志 文件状态标志
这两个名词是什么意思啊?请大家详细解释,最好配上例子,谢谢了!
...全文
424 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuncong250 2013-06-05
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> int main(){ int fd=open("a.txt",O_CREAT|O_RDWR|O_APPEND); if(fd == -1) perror("open"),exit(-1); int fd1 = dup2(fd,5); //如果5被使用,返回比5大的未使用的最小值 int fd2 = fcntl(fd,F_DUPFD,5); printf("fd=%d,fd2=%d\n",fd,fd2); int flags = fcntl(fd,F_GETFL); printf("flags=%d\n",flags);//没有O_CREAT if(flags & O_CREAT) printf("有Creat\n"); if(flags & O_RDWR) printf("读写权限\n"); if(flags & O_APPEND) printf("有追加\n"); //修改时只能修改状态标记,其他都不能修改 fcntl(fd,F_SETFL,O_RDONLY|O_TRUNC); flags = fcntl(fd,F_GETFL); if(flags & 3 == 0) printf("只读权限\n"); if(flags & O_RDWR) printf("读写权限\n"); if(flags & O_TRUNC) printf("TRUNC\n"); if(flags & O_APPEND) printf("Append\n"); close(fd); } /*fd=3,fd2=6 flags=1026 读写权限 有追加 读写权限*/
zjk2752 2013-04-13
  • 打赏
  • 举报
回复
文件描述符是一个标示,非负整数,类似于windows里的句柄,为了与标准C保持一致(标准C里的文件的读写都是通过File Pointer)UNIX采用了这样的三级结构,我混淆于文件描述标志和文件状态标志,还是看英文来的有效,fd flag = close_on_exec。是在一个文件在某进程中的标示,而由于文件可以被多个进程打开,因此这个file status flag能被很多个进程访问到,它表示的是这个文件在此刻的读写等标示。下面附上一份原文。 Note the difference in scope between the file descriptor flags and the file status flags. The former apply only to a single descriptor in a single process, whereas the latter apply to all descriptors in any process that point to the given file table entry. When we describe the fcntl function in Section 3.14, we'll see how to fetch and modify both the file descriptor flags and the file status flags.
zjk2752 2013-04-13
  • 打赏
  • 举报
回复
我看到这里也纠结了,文件状态标志还好理解,就是OPEN的时候设置的RD,WR,RDWR等。但是这个文件描述符标志书中没有太多说明。楼上一大票人都没说到点子上
AnYidan 2012-08-05
  • 打赏
  • 举报
回复
a small non-negative integer called a file descriptor

The C programming Language -- 第八章
G1036583997 2012-08-05
  • 打赏
  • 举报
回复
书中的例子:对于指定的描述符打印文件标志 :是对文件描述符(文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错相关联………………)的文件标志即他的类似权限的东西。0只能用它进行输入从中读取内容,1可以写也可以追加

ming@ming-ThinkPad-Edge:~/src/chapter3$ ./a.out 0 <data
read only
ming@ming-ThinkPad-Edge:~/src/chapter3$ ./a.out 1 >data
ming@ming-ThinkPad-Edge:~/src/chapter3$ cat data
write only
ming@ming-ThinkPad-Edge:~/src/chapter3$ :>data
ming@ming-ThinkPad-Edge:~/src/chapter3$ ./a.out 1 >>data
ming@ming-ThinkPad-Edge:~/src/chapter3$ cat data
write only, append
ming@ming-ThinkPad-Edge:~/src/chapter3$ :>data
ming@ming-ThinkPad-Edge:~/src/chapter3$ ./a.out 2 2>data
write only
ming@ming-ThinkPad-Edge:~/src/chapter3$ cat data
ming@ming-ThinkPad-Edge:~/src/chapter3$ ./a.out 2 2>>data
write only, append


以上纯属个人观点.PS:本人水平不高,正在看此书,如有错误请见谅
Universe_Admin 2012-07-19
  • 打赏
  • 举报
回复
文件描述符标志设置见 int fcntl(int fd , int cmd,...);
文件状态标志的设置见 void set_fl(int fd, int flags); void clr_fl(int fd, int flags);
tb754136505 2012-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这个状态是指什么?

描述符指向文件表项。
[/Quote]
描述符指向文件表项?文件描述符不是一个标识一个已打开文件的整数吗?
我是在书上看到的名词,具体状态是什么也不清楚……
书上的图是文件指针指向一个文件表,文件表里面有一个文件状态标志……
qq120848369 2012-07-18
  • 打赏
  • 举报
回复
这个状态是指什么?

描述符指向文件表项。
打开链接下载源码: https://pan.quark.cn/s/05da658a2377 在信息技术领域中,输入法作为操作系统的一个核心构成部分,赋予了用户利用键盘输入多语种文字的能力。"ime-日语输入法安装必须文件"这一资源是一套为日语输入法部署而设计、包含全部必要元素的集成包,对于那些需要在个人计算机上执行日语文字输入的操作者而言具有不可替代的作用。接下来将深入剖析其中所包含的核心概念。 IME(Input Method Editor,输入法编辑器)是操作系统内的一种软件支持服务,其功能在于为非拉丁字符环境提供文字输入方案,例如中文、日文、韩文等文字系统。在日本地区,IME通常被用来将罗马字(罗马拼音)形式的输入转换为平假名、片假名乃至汉字。此压缩文件内含的日语IME文件夹即为执行这一转换功能的关键要素。 kbdjpn.dll被视为一个关键的系统性文件,其意指“Japanese Keyboard Layout”(日语键盘布局)。该动态链接库文件负责设定日语键盘的排列方式及快捷操作组合,使用户能够借助常规的QWERTY键盘输入日语文字。倘若缺少这一文件,即便已经安装了日语输入法,依然无法正常显示及输入日语字符。 另外,imjp81k.dll同样是一个重要的系统性构成,它属于日语IME的范畴,全称为“Input Method Japanese for Windows 8.1 and later, Katakana mode”(适用于Windows 8.1及更新版本的日语输入法,片假名模式)。该文件支持日语的片假名输入,是处理日语输入的核心组成部分。在安装或升级日语输入法的过程中,保证imjp81k.dll的准确性与完整性显得尤为关键。 压缩包所含的"Window...
内容概要:本文研究了基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略,旨在解决传统三电平逆变器在谐波抑制、电网不平衡适应性及动态响应方面的技术瓶颈。通过构建融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相控制与电网电压前馈的一体化控制体系,全面优化逆变器的输出波形质量、相位同步精度与抗扰能力。文章深入分析了ANPC三电平拓扑的结构优势,如开关损耗均衡、中点电位可控性强和电压利用率高等特点,并设计了包含信号采集、核心控制与调制驱动三层架构的完整控制系统。通过Simulink仿真平台对稳态运行、电网不平衡及动态扰动等多种工况进行验证,结果表明该策略显著降低了总谐波畸变率,提升了锁相精度与系统动态稳定性,有效增强了逆变器在复杂电网环境下的适应能力和运行可靠性。; 适合人群:具备电力电子、自动控制及新能源并网相关基础知识,从事新能源发电、微电网、电力系统仿真等领域的科研人员与工程技术人员,特别适合研究生及以上层次的研究者。; 使用场景及目标:①用于提升大功率并网逆变器在电网电压不平衡、谐波干扰和动态扰动等复杂工况下的运行性能;②为高电能质量要求的应用场景提供先进控制解决方案;③支持科研仿真、论文复现与实际工程项目中的高性能并网控制系统设计与优化。; 阅读建议:建议结合提供的Simulink仿真模型进行实践操作,重点理解DPWMA调制机制、正负序分离锁相算法与电网电压前馈控制之间的协同作用,按照文档结构系统学习,并与传统控制策略进行对比分析,以深入掌握改进策略的技术优势与实现细节。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧