多线程编程
...
多进程编程
多进程编程1.程序和进程1.1程序如何被调用 通常我们的一个程序都由main()函数开始,那么main()函数又是如何被调用的呢? 操作系统内核中实现了一个叫加载器的程序,该程序在我们准备运行某个程序时,负责将我们要运行的程序加载到内存中去执行。 int main(int argc, char *argv[]) 中的那些参数是如何传入的? 在运行一个程序的main()函数之前,需要运行该程序的引导代码,引导代码是在编译后被链接器加到可执行文件中的,不需要人为去编写。当我们在终端中运行一个程序并传入参数arg1 arg2...时,shell会解析这些参数并传给加载器,加载器在加载程序时会把这些参数再传给引导代码,由引导代码传入这些参数到main()中。 1.2程序如何被终止一个进程的终止可以分为:正常终止和异常终止 正常终止: 在main()中return...
信号
信号1.基本概念信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程, 其实是在软件层次上对中断机制的一种模拟。 大多数情况下,是无法预测信号达到的准确时间,所以,信号提供了一种处理异步事件的方法 1.1信号的用途一个有“一定权限”的进程(比如内核)可以给另一个进程发送信号,所以信号是一种进程间通信的机制。当某个事件发生时,一个进程通知另一个进程。 1.2信号的使用案例 Linux在终端中输入 Ctrl + Z可以使内核发送**暂停信号 **(SIGCONT )以暂停前台的进程 Linux在终端中输入 Ctrl + C可以使内核发送中断信号(SIGINT )以结束前台的进程 用户可以通过 kill() 系统调用将任意信号发送给其它进程。当然对此是有所限制的,接收信号的进程和发送信号的进程的所有者必须相同,亦或者发送信号的进程的所有者是 root 用户 ...






