笔试面试准备合集
算法面试常考知识点
计算机网络面试常考知识点
Linux面试常考知识点
操作系统面试常考知识点
C/C++面试常考知识点
Linux面试常考知识点
同步、异步、阻塞与非阻塞
Linux的五种IO模型
多路复用
关于select、poll、epoll详细介绍+代码分析:
select
poll
epoll
fork与写时拷贝技术(COW)
Linux常见信号
软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill()发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。 收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:
- 第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处理。
- 第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。
- 第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。
在Linux环境中直接输入下面命令,显示全部信号。
kill -l
不可靠信号
Linux的信号继承自早期的Unix信号,早期Unix系统中的信号机制比较简单和原始,信号值小于SIGRTMIN(34)
的信号都是不可靠信号。
随着时间的发展,实践证明了有必要对信号的原始机制加以改进和扩充。
信号值位于SIGRTMIN(34)
和SIGRTMAX(64)
之间的信号都是可靠信号,可靠信号克服了信号可能丢失的问题。对于目前linux的两个信号安装函数:signal()及sigaction()来说,它们都不能把SIGRTMIN以前的信号变成可靠信号(都不支持排队,仍有可能丢失,仍然是不可靠信号),而且对SIGRTMIN以后的信号都支持排队。这两个函数的最大区别在于,经过sigaction安装的信号都能传递信息给信号处理函数,而经过signal安装的信号不能向信号处理函数传递信息。对于信号发送函数来说也是一样的。
上面框起来的是经常能够用到的信号,着重记忆,具体解释如下表格所示。
信号编号 | 信号名 | 信号说明 | 默认动作 |
---|---|---|---|
2 | SIGINT | Ctrl+C按键终止程序运行的信号 | 程序终止 |
4 | SIGILL | 非法的指令 | 程序终止 |
7 | SIGBUS | 运行非本CPU相关编译器编译的程序 | 程序终止 |
9 | SIGKILL | 强制杀死程序信号,任何程序都不可以捕捉该信号 | 程序终止,不可被捕捉 |
10 | SIGUSR1 | 用户自定义信号1 | 程序终止 |
11 | SIGSEGV | 段错误系统给程序发送的信号 | 程序终止 |
12 | SIGUSR2 | 用户自定义信号2 | 程序终止 |
13 | SIGPIPE | 管道破裂信号 | 程序终止 |
14 | SIGALRM | alarm()系统调用发送的信号 | 程序终止 |
15 | SIGTERM | kill命令默认发送的信号,默认动作是终止信号 | 程序终止 |
17 | SIGCHLD | 子进程退出信号 | 忽略该信号 |
附:结束进程的方法
linux文件系统种类
Linux文件类型和属性
Linux启动流程
硬链接和软连接
Linux常用命令
命令一般很难记住,需要平时运用才行: vi/vim选项及命令
僵死进程、孤儿进程和守护进程
未完待续…
========================================================
参考链接
良许Linux 大佬总结:Linux面试题(2020最新版)
CyC2018 大佬总结:Linux大纲总结