【发布时间】:2012-11-15 20:11:41
【问题描述】:
我正在做一个任务,我在 shell 中实现 unix 历史命令。在我的程序中,我为 SIGINT 编写了一个信号处理程序。当用户输入 (ctrl)(c) 时,将显示他们的历史记录。
当我的程序终止时,我需要将历史记录存储在一个文件中。有没有一种简单的方法可以检测我的程序何时退出?或者我是否需要为每种类型的信号((ctrl)(d)、pausebreak 等)设置一个信号处理程序。
【问题讨论】:
-
另一种选择是确保您的历史记录在磁盘上始终是最新的(在您使用的系统调用的限制范围内)。当你去执行一个命令时,你启动命令并写入历史文件。然后,如果程序终止,历史记录在磁盘上是最新的,为下次运行 shell 做好准备。
标签: c shell signals signal-processing