完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言 在Linux系统中,一切设备都看作文件。而每打开一个文件,就有一个代表该打开文件的文件描述符。程序启动时默认打开三个I/O设备文件:标准输入文件stdin,标准输出文件stdout,标准错误输出文件stderr,分别得到文件描述符 0, 1, 2。 实例 现在来看一个 测试ttyname函数的实例(ttyname函数功能是返回在该文件描述符上打开的终端设备的路径名): #include "apue.h" int main(void) { char *name; if(isatty(0)) { name = ttyname(0); if(name == NULL) name = "undefined"; } else { name = "not a tty"; } printf("fd 0: %sn", name); if(isatty(1)) { name = ttyname(1); if(name == NULL) name = "undefined"; } else { name = "not a tty"; } printf("fd 1: %sn", name); if(isatty(2)) { name = ttyname(2); if(name == NULL) name = "undefined"; } else { name = "not a tty"; } printf("fd 2: %sn", name); exit(0); } 运行该程序得到: 从程序运行结果来看,在文件描述符0、1和2上打开的终端设备都是/dev/tty1. 那么疑问就来了,前言中明确指出文件描述符0、1和2是打开标准输入文件stdin,标准输出文件stdout和标准错误输出文件stderr分别得到的。那么文件描述符0、1和2到底是打开哪个文件得到的呢?这里该如何解释呢???望懂得其中缘由者指点一二,小弟万分感谢! |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1734 浏览 0 评论
1591 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6887 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1914 浏览 0 评论
5235 浏览 0 评论
79803 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-25 05:42 , Processed in 0.346124 second(s), Total 38, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191