易截截图软件、单文件、免安装、纯绿色、仅160KB

linux进程中断后如何知道已经占用的信号量?

我在linux里面写了一个用户态的多进程程序,这些进程都会有些公用的信号量,用的是semaphore,有的时候我的进程会进入定时器中断,在中断子程序里面我要释放本进程已经占用的信号量,然后exit,可是我怎么知道我的进程占用了哪些信号量呢?

我的想法是对每个占用的信号量做个记录,在中断子程序里面根据这个记录来释放信号量,可是有的时候在申请信号量成功后和记录之间发生了中断,这样申请和记录就不是一一对应了,我想找个原子操作函数来封装这两个动作,可是我也没找到在用户态可以用的函数,那个spinlock指南用于核态。

不知道大家有没有遇见这样的问题,望高手指点,或者说个解决办法。
待牛人解答、、、

释放本进程点用的信号量:sem_post(),
详细用法参见:man sem_post

的确是一个很纠结的问题。
不过你可以在申请信号量之前屏蔽中断,记录以后再打开。

引用
的确是一个很纠结的问题。
不过你可以在申请信号量之前屏蔽中断,记录以后再打开。


在用户态程序里面有可以暂时屏蔽中断的接口吗?即使有的话,如果在屏蔽中断和恢复中断之间有一个中断来了,那等恢复中断后那个刚刚被屏蔽的中断还能再使进程进入中断吗?

用户态程序不用申请中断,当然也不能屏蔽中断。要知道系统调用也是中断的一种,为软中断。
你自己的程序用了哪些信号量,都不知道,看源码就行了,
要是bin文件,分析一下汇编。


定时器中断 这个信号是可以忽略的。

可以看一下

      int sigemptyset(sigset_t *set);

      int sigfillset(sigset_t *set


相关问答:

linux教程 - Linux/Unix社区 / 系统维护与使用区

有什么好的Linux教程吗?
小弟谢过~
[问题点数:0分]

google

据说鸟哥的私房菜不错。

鸟哥的Linux私房菜
更多的再这上面去搜索一下很LIUNX书籍还不错

引用
google
正解

鸟哥的Linux私房菜  ......

Linux如何在图形界面和命令行之间切换 [

各位大虾,我正在学习Linux,可是Linux图形界面和命令行之间切换遇到困难,在命令行下输入startx,不是进入图形界面 
而是出现
请问各位,这是为什么? 而且按Ctrl+Alt+F7,也不能命令行进入图形界面。&nbs ......

LINUX下卸载JDK问题

我用RPM报安装了一个老版本的JRE,后来想装新版本的,
不过,我把/usr/java目录直接给删了,
后再安装的时候,总是提示版本冲突,
而且我用RPM包卸载时也找不到文件了。
我对LINUX不熟悉,希望高手帮忙。
http: ......

linux 下C编程工具问题 请教 - C/C++ / C语言

linux 下C编程 集成开发环境 用什么比较好 
我初步选定 codeblock 
呵呵 还有 在linux 写了一个打印中文的代码,而今天在windows 下查看那个代码 , 是乱码 而后想到先用 EditPlus先进行编辑 然后复制 ......

求linux time 命令的实现代码

如题,谢谢

Linux是开源的,你搜索Linux源程序目录就可以找到shell命令time的实现代码。

kernel/time.c

你的头像很不错呀

使用函数time为进程提供当前的时间
#include<time.h>
time_t time(time ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号