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

linux 信号处理

曾做过signal相关的一点儿开发,谈谈我的一些理解。
首先,需要理解几个signal相关的函数。
  sigaddset(sigset_t* sigSet, int sigNum ) :  将信号sigNum 添加到信号集 sigSet 中;
  sigdelset(sigset_t* sigSet, int sigNum) : 将信号 sigNum 从信号集 sigSet 中删除;
  sigemptyset(sigset_t* sigSet) : 清空信号集;
  sigfillset(sigset_t* sigSet) : 在信号集中打开所有的信号。
但是这个时候只是定义好了如此一个信号集,还有对信号的操作函数:
   pthread_sigmask(int opCode, sigset_t* sigSet, sigset_t* oldSigSet) :
opCode 指定了如何对 sigSet 里的信号进行处理。opCode 有三个值: SIG_BLOCK
(将sigSet中的信号加到当前线程的屏蔽集中),SIG_UNBLOCK (将sigSet
中的信号从当前线程屏蔽集中删除),SIG_SETMASK (将sigSet 设为当前线程的屏蔽集)。 若oldSigSet !=
NULL,则将之前的信号屏蔽集存入其中。
   另外还有个函数 sigprocmask() 也有类似功能。区别是:pthread_sigmask()
是线程库函数,用于多线程进程。sigprocmask() 是旧的实现,用于单线程的进程。
  sigwait(sigset_t* sigSet, int* sigNum) : 当前线程等待 sigSet
中的信号。没有捕获到信号时,线程挂起;当捕获到时,函数返回,并将信号值存入 sigNum。
  sigaction(int sigNum, sigaction* newAct, sigaction* oldAct) :  捕获信号
sigNum,并调用相应的处理函数(定义在 newAct 中)。
  
虽然sigwait() 和 sigaction() 都是用于捕获信号,但两者还是有较大区别:sigwait()
是阻塞的,线程会一直挂起直到捕获到信号,并且对信号的处理是定义在
sigwait()后的,只会在当前线程内执行;而sigaction()是非阻塞的,当信号被捕获时,会由进程内当前被调度到的线程来执行处理函数(好
像是,not very sure...),被哪个线程处理是随机的。
所以,sigaction()适用于对实时性要求很高的时候。而在普通情况下建议使用sigwait(),因为其具有较好的可控性。
另外,还需要注意的是,SIG_KILL(大家应该都用过kill -9 吧) 和 SIG_STOP 是不能被用户屏蔽或捕获的。
好了,当理解了这几个函数后,可以自己试着来对信号进行处理了。对于lz的需求,简单举例如下:
  sigset_t blockSet, waitSet;
  int sigNum;


相关文档:

linux中快速查找文件

主要有下面三种方式:
1.whereis 文件名
特点:快速, 执行准确查找。
2.find / -name 文件名
查出很多东西,有很多
“Permission Denied".
#find / -name php.ini
3.locate 文件名
最快的方法.执行模糊查找。
注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了.
这里就要说说loc ......

[转载]Linux热插拔

 
将可移动设备连入系统时,系统的后台中会依次发生如下事件:
l 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。
l udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新 ......

Linux Shell语法速查 及 关键字说明

虽然学过
Linux Shell
编程,但由于编写
Shell
脚本的机会实在是比较少
(
通常在项目初期搭建开发环境时编写得比较
多一些
)
,所以一
些语法久而久之就会忘了,一个简单的语法去翻书效率实在是慢,所以就个人整理了一个表格,由于我用的编程语言是
C/C++
,所以在编程的时候往往脑海里面首
先浮现的是用
C
......

手工释放linux内存

当在Linux下频繁存取文件
后,物理内存会很快被用光,当程序
结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决
的办法。那么我来谈谈这个问题。
一、通常情况
先来说说free命令

引用
[root@server ~]# free -m
total used free shared buffers cac ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号