我正在编写一个Linux char驱动程序,我想在驱动程序关闭时释放一个信号量。问题是,我不能确定用户是否已经获取了信号量。执行此操作的适当方式是什么?
/* Not my code, but demonstrates the problem I face */
if (userland_var)
down(&my_sem);
/* ... */
/* Okay, now I want to release this semaphore, if held,
but I don't know the value of userland_var */
/* OPTI
我正在尝试在我的c程序中检测从Linux关机或重启。我发现程序可以使用signal(SIGTERM,handler) (SIGKILL,handler)。但是,如果用户使用命令杀死进程,这两个命令也会触发。
在一些解决方案中,他们说可以使用runlevel,但它不起作用。在系统初始化运行级之前,不知道进程是否被终止。我甚至尝试将脚本放在rcx.d中,但它仍然不起作用。
有人有什么建议吗?我需要在多种Linux系统上运行。
谢谢。
更新我使用了R解决方案,但我仍然看不到我的数据在重启或关机时是清晰的。是我的函数错了吗??
int start() {
if (initIni() == EX