[学习笔记]信号发送

kill函数
Kill基本用法
发送信号的函数有kill和raise
区别:kill既可以向自身发送信号,也可以向其他进程发送信号;
raise函数向进程自身发送信号。
Int kill(pid_t pid, int siq)
int raise(int signo)

Int kill(pid_t pid, int siq)
参数组合情况解释:
kill(pid_t pid, int siq)
    pid>0 将信号sig发给pid进程
    pid=0 将信号sig发给同组进程
    pid=-1 将信号sig发送给所有进程,调用者进程有权限发送的每一个进程(除了1号进程之外,还有它自身)
    pid<-1 将信号sig发送给进程组是pid(绝对值)的每一个进程
实验:
    //子进程向父进程发送信号
    //子进程向同组进程发送信号 (getpgrp()函数获取进程组pid)
结论:注意,如果在fork之前安装信号,则子进程可以继承信号。
kill和sleep在一起
子进程向父进程发送信号
sleep函数几点说明
1)sleep函数作用,让进程睡眠。
2)能被信号打断,然后处理信号函数以后,就不再睡眠了。直接向下执行代码
3)sleep函数的返回值,是剩余的秒数

raise函数
raise
?    raise
?    给自己发送信号。raise(sig)等价于kill(getpid(), sig);
?    killpg
?    给进程组发送信号。killpg(pgrp, sig)等价于kill(-pgrp, sig);
?    sigqueue
?    给进程发送信号,支持排队,可以附带额外数据信息。
pause函数
pause()函数
?    将进程置为可中断睡眠状态。然后它调用内核函数schedule(),使linux进程调度器找到另一个进程来运行。
?    pause使调用者进程挂起,直到一个信号被捕获
alarm函数
alarm函数,设置一个闹钟延迟发送信号
告诉linux内核n秒中以后,发送SIGALRM信号;;
手册描述:
NAME
       alarm - set an alarm clock for delivery of a signal
SYNOPSIS
       #include <unistd.h>
       unsigned int alarm(unsigned int seconds);
DESCRIPTION
       alarm() arranges for a SIGALRM signal to be delivered to the process in seconds seconds.
       If seconds is zero, no new alarm() is scheduled.
       In any event any previously set alarm() is cancelled.
实验1:手工发送信号alarm信号实践
kill -ALRM 21333
kill -14 213333
kill -SIGALRM 213333
命令发送信号实践
kill -alram ` ps -aux | grep 01aram | grep -v vi | awk ‘{print $2}‘ `
编程实践
void  myhandle(int num)
{
    printf("recv signal id num : %d \n", num);
    //kill -alram ` ps -aux | grep 01aram | grep -v vi | awk ‘{print $2}‘ `
    alarm(1);
}

int main(void)
{
    printf("main ....begin\n");
    //注册信号处理函数
    if (signal(SIGALRM, myhandle) == SIG_ERR)
    {
        perror("func signal err\n");
        return 0;
    } 

    alarm(1);
    while(1)
    {
        pause();
        printf("pause return\n");
    }
    return 0;
}

复制去Google翻译翻译结果

时间: 2024-11-08 04:36:38

[学习笔记]信号发送的相关文章

[学习笔记]信号的高级用法

sigaction函数注册信号处理函数 sigaction函数 q  包含头文件<signal.h> q  功能:sigaction函数用于改变进程接收到特定信号后的行为. q  原型: int  sigaction(int signum,const struct sigaction *act,const struct sigaction *old); q  参数 q  该函数的第一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一 个特定有效的信号(为这两个信号定义自己的处理

[学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践

1基本概念 中断 q  中断是系统对于异步事件的响应 q  中断信号 q  中断源 q  现场信息 q  中断处理程序 q  中断向量表 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序 生活中的中断和计算机系统中的中断 1)  无中断生活场景 张三看书,厨房烧水 2)有中断的生活场景 张三看书,设置闹钟,厨房烧水. 闹钟发出中断信号,张三把书合好(第20页),去厨房把开水事情处理好,张三重新打开20页进行阅读. 3)计算机系统的中断场景 中断源发出中断信号,CPU判断

[学习笔记]信号的阻塞和未达

信号在内核中的表示 q  执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending).进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. q  注意,阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作.信号在内核中的表示可以看作是这样的: 说明1)PCB进程控制块中结构体中有信号屏蔽状态字(block),信号未决状态字(pending)还有是否

ANDROID_MARS学习笔记_S02_006_APPWIDGET3_AppWidget发送广播及更新AppWidget

一.简介 二.代码1.xml(1)example_appwidget.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_w

学习笔记——mail发送javax.mail.AuthenticationFailedException: failed to connect at javax.mail.Service.connect(Service.java:322) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect

今天在学习发送邮件的时候,发现一直提示 然后在我的邮箱里,我看密码什么都正确为何发布出去,然后想起MailUtils.createSession("smtp.163.com",用户名, 密码); 密码有一个授权密码和一个密码,然后换成授权密码成功了

APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int kill(pid_t pid,int signo); int raise(int signo); Both return: 0 if OK,?1 on error kill向进程号为pid的进程发送signo信号 能够看出 以下两行代码是等价的: kill(getpid(), signo); raise(sig

Linux System Programming 学习笔记(十) 信号

1. 信号是软中断,提供处理异步事件的机制 异步事件可以是来源于系统外部(例如用户输入Ctrl-C)也可以来源于系统内(例如除0) 内核使用以下三种方法之一来处理信号: (1) 忽略该信号.SIGKILL和SIGSTOP不能被忽略. (2) 捕捉并且处理该信号.The kernel will suspend execution of the process's current code path and jump to a previously registered function. SIGK

学习笔记(信号与系统)

学习笔记(信号与系统) 来源:网络 第一章 信号和系统 信号的概念.描述和分类 信号的基本运算 典型信号 系统的概念和分类 1.常常把来自外界的各种报道统称为消息: 信息是消息中有意义的内容: 信号是反映信息的各种物理量,是系统直接进行加工.变换以实现通信的对象. 信号是信息的表现形式,信息是信号的具体内容:信号是信息的载体,通过信号传递信息. 2.系统(system):是指若干相互关联的事物组合而成具有特定功能的整体. 3.信号的描述--数学描述,波形描述. 信号的分类: 1)确定信号(规则信

数字语音信号处理学习笔记——语音信号的同态处理(2)

5.4 复倒谱和倒谱 定义       设信号x(n)的z变换为X(z) = z[x(n)],其对数为: (1) 那么的逆z变换可写成: (2) 取(1)式则有 (3) 于是式子(2)则可以写成       (4) 则式子(4)即为信号x(n)的复倒谱的定义.因为一般为复数,故称为复倒谱.如果对的绝对值取对数,得 (5) 则为实数,由此求出的倒频谱c(n)为实倒谱,简称为倒谱,即 (6) 在(3)式中,实部是可以取唯一值的,但对于虚部,会引起唯一性问题,因此要求相角为w的连续奇函数. 性质: 为