- 论坛徽章:
- 0
|
这些问题是在学习设置驱动程序的属性时产生的。通过学习,了解到虽然Linux/Unix把外设(如终端,打印机等)都当成文件来对待,但由于这些设备本身性质的差异,决定了虽有统一的外貌(文件形式),但各自有各自的属性。这个可以通过fcntl、tcget/setattr等系统调用在各自的驱动程序中进行设置。而这些函数的其中一个参数都是fd。
1.是不是对于同一个驱动程序,不同的fd可以设置各自的属性?例如:对于磁盘驱动程序而言,设置O_SYNC后是不论何种程序的write调用都不再缓冲,还是关闭缓冲只对某一个fd起作用?
2.驱动程序是如何做到这一点的呢?
3.linux下终端的概念是什么呢?终端是一种外设(如键盘+显示器)?但键盘和显示器只有一个,而终端可以开多个。对于某一终端的属性设置显然不能影响其他终端,是否终端驱动在里面做了工作而将各个终端区别对待?使各个终端都有各自的属性?简单的tcgetattr(0,&inof),就可以取得某一终端的信息?每个进程都有0,1,2三个fd值,这些fd值与某一终端如何关联?
4.在linux下,fd值与标准库的File *fp有什么区别和联系?fd究竟是什么?
呵呵,问题问得比较散乱,这些知识可以在哪本书中找到详细的答案呢?谢谢! |
|