如何用信号通知标准输入结束

提姆
  1. 在Bash中,我了解到可以通过here文档更改结束信号。但是默认情况下,我如何发信号通知标准输入结束?
  2. 我偶然发现,使用cat和chardet时,可以通过Ctrl + d将其stdin输入表示为完成。但是我似乎记得Ctrl + d和Ctrl + c与结束正在运行的命令的执行类似。那我错了吗?
吉勒斯“别再邪恶了”

Ctrl+D在终端上的行首键入时,表示输入的结尾。从Unix的角度来看这并不是一个信号:当一个应用程序正在从终端读取并且用户按下时Ctrl+D,该应用程序会被通知已到达文件的末尾(就像它是从文件中读取并传递了一样。最后一个字节)。

Ctrl+C确实发送信号SIGINT默认情况下,SIGINT(中断信号)会杀死前台应用程序,但是该应用程序可以捕获信号并以某种不同的方式做出反应(例如,shell本身捕获信号并中止您已经开始键入的行,但不会) t退出,它会显示新的提示并等待新的命令行。

您可以使用命令更改与文件结尾和SIGINT相关联的字符stty,例如stty eof a,将使a文件结尾字符,并stty intr ^-禁用SIGINT字符。这很少有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章