与信号相关的linux系统编程API

简介: 1. kill(pid_t pid, int sig); //给指定的进程发送sig信号   raise(int sig); //给当前进程发送sig信号2. 处理指定的信号    typedef void (*sighandler_t)(int);   sighandler_t   signa...


1. kill(pid_t pid, int sig); //给指定的进程发送sig信号
   raise(int sig); //给当前进程发送sig信号


2. 处理指定的信号 
   typedef void (*sighandler_t)(int);


   sighandler_t   signal(int  signum,  sighandler_t
       handler);
   //使用新的处理函数handler来处理signum信号, 并返回原来的处理函数地址


查看信号: man 7 signal


3. SIGCHLD信号, 当子进程退出时会向父进程发送SIGCHLD信号


4. 信号集合操作
       int sigemptyset(sigset_t *set); //清空信号集合set
       int sigfillset(sigset_t *set);//把所有信号填入到set里
       int sigaddset(sigset_t *set, int signum);//把信号signum加入到set里
       int sigdelset(sigset_t *set, int signum);//把信号signum从set里移除
       int   sigismember(const   sigset_t   *set,   int signum); //检查信号signum是否存在set里


5. int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
  how有三个类型 
SIG_BLOCK  设当前进程的堵塞住的信号+= set里指定的信号
SIG_UNCBLOCK  设当前进程的堵塞住的信号-=set里指定的信号 
SIG_SETMASK 堵塞的信号=set里指定的信号


6. sigaction 信号处理
       int sigaction(int signum, const struct sigaction
       *act, struct sigaction *oldact);


       struct sigaction {
         void (*sa_handler)(int);
         void (*sa_sigaction)(int, siginfo_t *, void *);
         sigset_t sa_mask;
         int sa_flags;
         void (*sa_restorer)(void); //已不用了
       }


sa_handler和sa_sigaction只能二选一, 当使用sa_sigaction时, sa_falgs为SA_SIGINFO, 否则为0;
sa_mask设置在信号处理函数运行期间堵塞住哪些信号


sigqueue可给指定的进程发送指定的信号, 并可附带参数. 只能使用sa_sigaction处理函数才能接收
int  sigqueue(pid_t  pid,  int  sig, const union
             sigval value);



目录
相关文章
|
3天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
110 78
|
7天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
36 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
119 48
|
3天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
38 13
|
29天前
|
存储 数据可视化 API
重磅干货,免费三方网络验证[用户系统+CDK]全套API接口分享教程。
本套网络验证系统提供全面的API接口,支持用户注册、登录、数据查询与修改、留言板管理等功能,适用于不想自建用户系统的APP开发者。系统还包含CDK管理功能,如生成、使用、查询和删除CDK等。支持高自定义性,包括20个自定义字段,满足不同需求。详细接口参数及示例请参考官方文档。
|
27天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
20 3
|
4天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
16 0
|
1月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
33 1
|
1月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
65 1
|
15天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
下一篇
DataWorks