1635_fileno的简单使用
创始人
2024-06-01 06:27:46
0

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         在看MIT的OS课程的时候发现自己动不动就因为只是的缺少而卡住,而这个学习占据了我工作之余很多的时间。现在都有一点觉得通关不了的感觉了,缺乏的知识实在是多。不过,反正时光漫长不知如何抛,在这其中慢慢熬也算是一种自我修炼了。

         我看到一段这样的代码,一下子把我给卡住了。加上最近这段时间的个人状态欠佳,第一行代码其实是卡了我好几天。对于专门从事UNIX或者LINUX平台的开发人员来说,这或许会笑掉大牙。不过,真的是隔行如隔山,至少他们的行业把我给拦住了。为了弄明白这是在干什么,绝对还是一点点来。先搞清楚fileno的用法以及里面的这个参数的由来。

1. fileno的作用是从标准的输入、输出流中提取出来文件描述符。

2. 关于文件描述符的使用,在传递给可能关闭它的代码之前先试用dup进行复制。这一点,依然没有看懂。但是之前看了一些xv6的书籍,至少是到了dup等概念了。

3. 这个接口运行成功则会返回文件描述符,如果运行失败返回-1。这里提到了一个errorno的概念,再次跳过吧。

4. 这个函数有一个属性,那就是是否线程安全,数值为MT-Safe。

         这个接口符合POSIX.1-2001以及POSIX.1-2008的标准。

         好,这样fileno的功能基本了解了。接下来,看看stdin是一个什么信息。这个虽然猜得出来,但是还是得去求证一下。

1. 看第二份这样的文件,看到这个函数后面带着一个数字,大部分函数都有,这会是什么概念呢?后面再去分析。

2. FILE数据类型是一个_iobuf的结构体封装成的,里面的具体成员信息在此也不做具体的了解了。我大概看了一下,临时决定先跳过。

3. 其实几个标准的IO流在UNIX的角度都是文件。

4. FILE是UNIX文件描述符缓冲包装器。

         这几个标准的输入、输出、错误都是符合C89标准的,而不是POSIX。这个标准还要求软件启动的时候需要默认打开这三个IO流。其中,stderr是不带有缓冲的,stdout则是带有缓冲机制的。因此,这样可能会导致一定的显示异常。

         我在主页上看到了这样的描述,突然间觉得前面的数字疑问有了答案。1应该代表的是用户命令,2则是系统调用,3是库函数,4是设备,5是文件格式,6暂时看着没有,7是概览、约定以及其他,8是超级用户以及系统管理员命令。

         虽然磨了很久,但是感觉终究是可以继续下去了。

         根据上面的知识,应该可以推断出来,其实上面的fileno(stdin)的结果应该是0。

         其实的测试结果也看得出来,这个推测是准确的。

相关内容

热门资讯

催收人员泄露用户欠款信息是否侵...   冯佳敏  案情回顾  张某在某信用卡中心申领了一张信用卡,后张某出现信用卡逾期还款情况。在拨打其...
大唐西市(00620.HK)拟... 格隆汇7月9日丨大唐西市(00620.HK)发布公告,2025年7月8日,公司与配售代理(即昌利证券...
杰夫・贝佐斯出售6.66亿美元... 杰夫・贝佐斯  一份监管文件于周二显示,亚马逊创始人杰夫・贝佐斯在 7 月的两天内出售了近 300 ...
美国关税暂缓90天的“得与失” 【环球时报特约记者 任重 环球时报记者 杨舒宇 倪浩】7月9日美国“对等关税”政策暂缓期到期在即,美...
落实“塔长制” 筑牢通信防线(...   随着主汛期来临,风雨考验在即。安徽阜阳铁塔严格落实“塔长制”要求,全力筑牢通信保障防线。按照“塔...
NASA依赖加深,SpaceX... 【环球时报综合报道】相比五角大楼或多或少还能找到几个SpaceX的“替补者”,美国国家航空航天局(N...
司法行政领域代表与中外记者见面... 经济日报北京7月8日讯(记者刘亮)在国新办举办的“新征程上的奋斗者”中外记者见面会上,5位来自司法行...
特朗普:韩国应自行支付国防费用 格隆汇7月9日|据央视,当地时间8日,美国总统特朗普在白宫内阁会议上表示,韩国应该自行支付军事防卫费...
阳宗海风景区开展应急演练模拟处...   本报讯 记者王琳报道 近日,昆明阳宗海风景名胜区在施家咀湿地开展旅游行业突发事件处置应急演练,进...
从“技术验证”转向“场景落地”... 日前,一辆特斯拉新车自己通过FSD(完全自动驾驶),找到车主完成交付;中国的无人驾驶汽车则在中东的道...