我有一个练习来编写一个程序,它将执行以下管道处理:
ls -la | grep "^d" | more我使用3个子进程和stdio重定向来连接它们之间的管道。
程序成功完成后,它显示了良好的结果,没有显示错误或其他任何东西,而且当我使用cat而不是more时,执行后一切都正常工作,有没有可能更多地更改了一些系统值,并且不再更改它们?
发布于 2013-06-24 18:28:31
很可能是more在TTY上关闭了echo和规范模式(参见man 3 termios),并且在退出之前永远不会再打开它们(要么是因为它在没有机会退出的情况下被杀死,要么是因为它认为自己没有连接到TTY)。你可以使用gdb连接到more来找出为什么它变得越来越快,或者你可以简单地在退出之前自己重置终端。
https://stackoverflow.com/questions/17272404
复制相似问题