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

在linux进程中的信号屏蔽

       原创文章,转载请注明出处,谢谢!       
       作者:清林,博客名:飞空静渡
在linux的进程中可以接收到各种的信号,并且如果你不对信号进行处理,linux中的进程就会采用默认的处理方式处理,比如ctrl-c的信号,进程对它的处理就是终止进程的执行。
在linux中,我们也可以在进程中屏蔽掉某些信号,使进程不去处理这些信号,但其中的SIGKILL和SIGSTOP是不能被阻塞的。
在这里先介绍几个信号的函数:
    int sigempty(sigset_t *set);                 // 清空信号集set
    int sigfillset(sigset_t *set);                   // 填满信号集,即让set包含所有的信号
    int sigaddset(sigset_t *set, int signo);  // 在set中增加signo信号
    int sigdelset(sigset_t *set, int signo);   // 在set中去掉signo信号
    int sigismember(sigset_t *set, int signo); // 信号signo是否在信号集set中
    int sigprocmask(int how, const sigset_t set, sigset_t oset); // 若oset非空,则进程的当前信号屏蔽字通过oset返回,若set是一个非空指针,着参数how指示如何修改当前信号的屏蔽字,how可以取三个值:
    SIG_BLOCK:增加一个信号。
    SIG_UNBLOCK:解除一个信号。
    SIG_SETMASK:该进程的信号将被set信号集取代。
    int sigpengding(sigset_t *set);  // 该函数返回信号集,该信号通过set参数返回。
以上函数都在#include <signal.h> 头文件中。
下面用《unix环境高级编程》里的一个例子说明一下,代码有所修改,先看代码(main.c,里面有个人对代码的注释):
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
static void sig_quit(int);
int
main(void)
{
sigset_t newmask, oldmask, pendingmask;
//设置对信号SIGQUIT的处理函数
if (signal(SIGQUIT, sig_quit) == SIG_ERR)
{
fprintf(stderr, "can't catch SIGQUIT\n");
exit(1);


相关文档:

踏上Linux内核学习之旅

常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 
  1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(t ......

Linux使用

在linux中userid和usergroup分别存于 /etc/group, /etc/shadow, /etc/passwd
在group 中可以修改sudo group和admin权限
远程登陆设置在 /etc/ssh/ssh-config 和 /etc/ssh/sshd-config里,重设后 /etc/init.d/ssh restart
在webmin中更改了firewall后必须重启网络 : /etc/init.d/networking restart
In Ubuntu, remote d ......

Linux 用户层如何调用接口设置寄存器

下面的代码分析是根据linux-2.6.17.14_stm22版本
#define STSYS_WriteRegDev32LE(Address_p, value)          writel((u32)value, (void*)Address_p)
在include/asm-sh/io.h
#define writel(v,a) ({__raw_writel((v),(a));mb();})
#define __raw_write(v,a)  __writ ......

Linux查看系统配置常用命令

系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统
版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname      &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号