14-练习
4.10 练习
4-1. tee命令是从标准输入中读取数据,直至文件结尾,随后将数据写入标准输出和命令行参数所指定的文件。(44.7节讨论FIFO时,会展示使用tee命令的一个例子。)请使用I/O系统调用实现tee命令。默认情况下,若已存在与命令行参数指定文件同名的文件,tee命令会将其覆盖。如文件已存在,请实现-a命令行选项(tee-a file)在文件结尾处追加数据。(请参考附录B中对getopt()函数的描述来解析命令行选项。)
4-2. 编写一个类似于cp命令的程序,当使用该程序复制一个包含空洞(连续的空字节)的普通文件时,要求目标文件的空洞与源文件保持一致。
①译者注:所谓synchronized I/O data integration completion在SUS的base definition 3.374中有详细定义,但学究气十足,语焉不详。建议参考《UNIX环境高级编程》v2一书(后续译注中简称为APUEv2)3.3节关于O_DSYNC的描述。
②译者注:简而言之,相对于文件头部的绝对偏移量=当前文件偏移量+offset。