我有一个我写的共享对象,它链接到Linux可执行文件(例如游戏)。现在当程序结束(游戏结束!)时,我应该在我创建的共享对象中使用哪种信号处理程序来执行某些清理活动?
请记住,我无法控制Linux可执行文件,我只是从Internet下载并通过将其链接到我的共享对象来运行它。当游戏结束时,我希望能够捕获该事件并进行一些清理活动。
我的问题是否明确?有什么想法吗?
谢谢, 克里希纳
答案 0 :(得分:1)
如果您将游戏作为子进程运行,那么当其他进程结束时,您将获得SIGCHLD(17)。
答案 1 :(得分:1)
如果主应用程序使用标准C库,那么您可以使用atexit(3)
函数来注册应用程序退出时要调用的函数。
在许多情况下,函数不会被调用(通过信号异常终止,调用_exit(2)
等),因此请查看手册页以查看是否涵盖了所有用例。
答案 2 :(得分:0)
通常,您无法在 过程中执行此操作。 (软件不能有垂死的愿望。)
但是,你可以在游戏结束后在包装脚本或运行其他程序的东西中运行现有的游戏过程:
#!/bin/sh
run_game
perform_cleanup_activity