Linux入门学习15

信号

是在生活中随处可见的,他的特征是简单,不携带大量信息,满足条件后才会触发。

信号机制

就是利用信号是进程之间联系。内核是用来负责信号的产生和发送的

如何产生信号

  1. 按键产生
  2. 系统调用产生
  3. 软件条件产生
  4. 硬件异常产生
  5. 命令产生

信号的处理方式

  1. 捕捉:获得信号
  2. 忽略:跳过信号
  3. 按照系统命令处理:终止程序

查看所有信号选项

Kill -l

信号四要素

  1. 编号,每个信号都有自己的编号,相当于身份证
  2. 名称,每个信号都有自己的名字,相当于姓名
  3. 事件,信号执行的动作

        4.系统默认动作

  1. Term:终止进程。
  2. lgn:忽略信号 (默认即时对该种信号忽略操作)
  3. Core:终止进程,生成Core文件。(查验进程死亡原因,用于 gdb调试)
  4. Stop:停止(暂停)进程。
  5. Cont:继续运行进程。

函数

设置计时器函数

alarm:

int alarm(int seconds);

参数:定时秒数

setitimer:

int setitimer(int which,struct itimerval *new_value, struct itimerval

*old_value)

参数:

  1. which,指定定时方式

自然定时:ITIMER_REAL 计算自然时间。

虚拟空间计时(用户空间)::ITIMER_VIRTUAL 只计算进程占用cpu的时间。

运行时计时(用户+内核)::ITIMER_PROF 计算占用cpu及执行系统调用的时间。

  1. new_value:定时秒数

struct itimerval {

struct timeval {

time_t tv_sec; /* seconds */

suseconds_t tv_usec: /* microseconds */

}it_interval;

struct timeval {

time_t tv_sec; /* seconds */

suseconds_t tv_usec: /* microseconds */

}it_value;

}

  1. old_value:传出参数,上次定时剩余时间,可设为NULL

信号集操作函数

        //清空set

int sigemptyset(sigset_t *set);

        //置1 set

int sigfillset(sigset_t *set);

        //把某个信号加入到 set

int sigaddset(sigset_t *set, int signum);

        //把某个信号从set中移除

int sigdelset(sigset_t *set, int signum);

        //查看某个信号,是否在set中

int sigismember(const sigset_t *set, int signum);

sigprocmask:用来设置屏蔽信号——只是将信号延后处理,而非忽略

int(int how,sigset_t *set, sigset_t *oldset)

参数:

how:SIG_BLOCK:阻塞

  SIG_UNBLOCK:非阻塞

  SIG_SETMASK:自定义

set:自定义信号集

old:旧有的信号集

sigpending:读取当前进程的未决信号集

int (sigset_t *set)

参数:set传出未决信号集

信号捕捉函数

typedef void (* sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

sigaction 修改信号函数

int sigaction(int signum, struct sigaction *act, struct sigaction

*oldact);

参数

act:传入参数,新的处理方式。。

oldact:传出参數,旧的处理方式

struct sigaction {

void (*sa_handler)(int);  捕捉函数后进行的动作

void (*sa_sigaction)(int, siginfo_t *, void *);

sigset_t sa_mask;   屏蔽的函数

int sa_flags;   一般设为0

void (*sa_restorer )(void);

};

SIGCHLD信号

SIGCHLD的产生条件

  1. 子进程终止时
  2. 子进程接收到SIGSTOP信号停止时。
  3. 子进程处在停止态,接受到SIGCONT后唤醒时。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简欧k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值