Unix/Linux 编程实践教程第六章习题

tips: 这一章习题倒是少,练习题多到头皮发麻。。。编程练习 6.3 中的毫秒应该是写错了,是百毫秒

6.1

tr命令用于转换或删除文件中的字符,详细的用法可以参考
Linux tr命令,至于不接受命令行指定文件,我想是因为标准输入输出可以被重定向到任何类型的链接上,包括文件,所以没有必要接受命令行指定文件。这样只考虑标准输入输出降低了程序编写的难度,相应的,用户使用起来就相对麻烦一些,当然,这只是我的猜测,可能不对。除了tr,还有colrm工具。

6.2

对于磁盘文件而言,设置O_NODELAY仅仅改变了文件描述符属性的一个 bit,除此之外没有任何影响,这是因为磁盘文件在任何时候都是可读可写的,这在POSIX标准中有明确说明。阻塞和非阻塞的区别在于请求不能立即得到应答,需要等待,那就是阻塞;否则可以理解为非阻塞,根据上面的定义,磁盘文件本来就是非阻塞的,所以O_NODELAY没有意义。
对于socket而言,网络上的数据到达的时间是不确定的,不是任何时候都有数据的,和磁盘文件不一样,这种情况下设置O_NODELAY才有意义。

tips: 这道题以我目前的水平回答的还不是很准确,主要是总是把非阻塞异步混为一同,比如给磁盘文件设置O_NODELAY就有种效率肯定提升了,是异步操作的感觉,其实这是错误的,处理 IO 的时候,阻塞和非阻塞都是同步 IO,实际上要解决大量读写磁盘文件的问题,只有使用多线程或者异步IO

参考资料:
Non-blocking I/O with regular files)
怎样理解阻塞非阻塞与同步异步的区别?
为什么用non-blocking的方式读写磁盘文件无意义?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thewangcj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值