ZHCUAU3J January 2018 – March 2024
通过 add_device 函数,您可以添加和使用器件。通过 add_device 注册器件后,高级 I/O 例程便可用于该器件上的 I/O。
您可以使用不同的协议来与任何所需器件进行通信,并使用 add_device 来安装该协议;不过,不应修改主机函数。默认流 stdin、stdout 和 stderr 可以按照Example7-1 中所示使用 freopen() 来重新映射至用户定义的器件而非主机上的文件。如果以这种方式重新打开这些默认流,缓冲模式将更改为 _IOFBF(全缓冲)。若要恢复默认的缓冲行为,请在每个重新打开的文件中使用适当的值(对于 stdin 和 stdout,为 _IOLBF;对于 stderr,则为 _IONBF)来调用 setvbuf。
默认流 stdin、stdout 和 stderr 可以按照Example7-1 中所示使用 freopen() 来映射至用户定义的器件而非主机上的文件。每个函数都必须根据需要设置和维护自身的数据结构。一些函数定义不执行任何操作并只应返回值。
使用唯一的函数名称
函数名称 open、read、write、close、lseek、rename 和 unlink 供低级例程使用。对于由您编写的器件级别函数,请使用其他名称。
使用低级函数 add_device() 将器件添加至 device_table。器件表是一个静态定义并支持 n 个器件的数组,其中 n 由 stdio.h/cstdio 中的宏命令 _NDEVICE 定义。
器件表的第一个条目预定义为运行调试器的主机器件。低级例程 add_device() 会在器件表中查找第一个空位置,然后使用传递的参数对器件字段进行初始化。如需完整说明,请参阅 add_device 函数。