十九、Linux 进程与信号---环境表】的更多相关文章

19.1 环境表 19.1.1 介绍 这是启动例程的第二各作用,搜集环境表,然后传递给主函数. 环境表就是一个指针数组.      环境表 每个进程都有一个独立的环境表 初始的环境表继承自父进程 主函数可以带三个参数,第三个参数则是环境表,可以通过第三个参数获取环境参数,也可以通过外部全局变量来定义环境表,extern char **environ. 设置的环境变量只影响当前进程的,不为全局的 19.1.2 例子 (1)通过 main 函数获取 #include <stdio.h> #incl…
30.1 信号的基本概念 信号(signal)机制是Linux 系统中最为古老的进程之间的通信机制,解决进程在正常运行过程中被中断的问题,导致进程的处理流程会发生变化 信号是软件中断 信号是异步事件 不可预见 信号有自己的名称和编号 信号和异常处理机制 信号发生的来源 硬件来源:如按下键盘或其他硬件故障,信号是由驱动程序产生 软件来源:最常用发送信号的系统函数是 kill(),raise(),alarm() 和 setitimer() 等函数,软件来源还包括一些非法运算等操作,软件设置条件(如:…
20.1 setjmp 和 longjmp 函数 20.1.1 函数介绍 #include <setjmp.h> int setjmp(jmp_buf env); 函数功能:设置非局部跳转的跳转点(设置跳转点) 返回值:直接调用返回0,若从 longjmp 调用返回则返回0 这个函数会被执行两次,一次是自己本身使用的时候返回0,另一次再调用 longjump 的时候,此函数再返回 longjmp 中的 val 值 #include <setjmp.h> void longjmp(j…
22.1 fork 和 vfork 函数 22.1.1 函数说明 #include <unistd.h> #include <sys/types.h> pid_t fork( void); 函数说明: 一个现有进程可以调用fork函数创建一个新进程. 由fork创建的新进程被称为子进程(child process). fork函数被调用一次但返回两次. 两次返回的唯一区别是子进程中返回 0 值而父进程中返回子进程 ID. 子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的…
18.1 进程的概念 程序:程序(program)是存放再磁盘文件中的可执行文件 进程 程序的执行实例被称为进程(process) 一个程序的执行实例可能由多个 进程具有独立的权限和职责.如果系统中某个进程崩溃,它不会影响到其余的进程. 每个进程运行在其各自的虚拟地址空间中,进程之间可以通过由内核控制的机制相互通讯 进程ID 每个 Linux 进程都一定由一个唯一的数字标识符,称为进程ID(process ID),进程ID总是一非负整数 18.2 内核中的进程结构体 每一个启动进程都有一个 ta…
34.1 信号特点 信号的发生是随机的,但信号在何种条件下发生是可预测的 进程杠开始启动时,所有信号的处理方式要么默认,要么忽略:忽略是 SIGUSR1 和 SIGUSR2 两个信号,其他都采取默认方式(大多数是终止进程). 进程在调用 exec 函数后,原有信号的捕捉函数失效 子进程的诞生总是继承父进程的信号处理方式 在系统层面上信号的发生是可靠的 在Linux 中的可靠性只保证一次,进程在处理信号期间,若发生同类型的信号不会丢失(内核会保留),会被延迟处理 但同类型信号的多次发生只会保留一次…
25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 main 函数开始执行.因为调用 exec 并不创建新进程,所以前后的进程 ID 并未改变.exec 只是用另一个新程序替换了当前进程的正文.数据.堆和栈段. exec 函数族也称为代码替换函数族 25.1.1 函数说明 #include <unistd.h> int execl(const cha…
9.1 进程简单说明 进程是一个非常复杂的概念,涉及的内容也非常非常多.在这一小节所列出内容,已经是我极度简化后的内容了,应该尽可能都理解下来,我觉得这些理论比如何使用命令来查看状态更重要,而且不明白这些理论,后面查看状态信息时基本上不知道状态对应的是什么意思. 但对于非编程人员来说,更多的进程细节也没有必要去深究,当然,多多益善是肯定的. 9.1.1 进程和程序的区别 程序是二进制文件,是静态存放在磁盘上的,不会占用系统运行资源(cpu/内存). 进程是用户执行程序或者触发程序的结果,可以认为…
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 信号与进程几乎控制了操作系统的每个任务. 在shell中输入ps -ef命令,我们将得到如下结果: (译者注:-e Select all processes. Identical to -A: -f Do full-format listing. This option can be combined with many other UNIX-style…
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 译者:李秋豪 信号与进程几乎控制了操作系统的每个任务. 在shell中输入ps -ef命令,我们将得到如下结果: (译者注:-e Select all processes. Identical to -A: -f Do full-format listing. This option can be combined with many other UNIX…