Linux程序设计--进程与信号

来源:互联网 发布:淘宝客户运营平台在哪 编辑:程序博客网 时间:2024/06/04 18:57

进程的结构、类型和调度

可以把进程看做是正在运行的程序

进程结构:进程标识符、文件描述符、栈空间和环境变量(程序计数器)


操作系统通过进程的PID对它们进行管理,PID是进程表的索引。Linux调度器根据进程的优先级来决定调用哪个进程。

用不同的方法启动新进程


system函数作用:运行以字符串参数的形式传递给它的命令并等待命令的完成。它很有用,但是也有局限性,程序必须等待由system函数启动的进程结束之后才能继续,因此我们不能立刻执行其它任务。


exec函数system函数更有效,因为在新的程序启动后,原来的程序就不再运行了。exec启动的新进程继承了原来进程的许多特性,新进程的PIDPPID与原来的一样。

父进程、子进程和僵尸进程

让进程同时执行多个函数,可以通过fork创建一个新进程,新进程与原进程一模一样,执行代码也完全相同,但新进程有自己的数据空间、环境和文件描述符。父进程中的fork调用返回的是新的子进程的PID,而子进程中的fork调用返回的是0


函数通过fork创建的子进程终止时,它与父进程之间的关联还会继续保持,直到父进程也正常终止或父进程调用wait才可结束,因此,进程表中代表子进程的表项不会立刻释放,虽然子进程不再运行,但是它仍存在于系统中,这个时候它就是一个死进程或僵尸进程(zombie,如果父进程异常终止,那么子进程会自动把PID1的进程(init)作为自己的父进程,并一直保存在进程表中,直到被init发现并释放。

什么是信号以及如何使用它们

信号UNIXlinux系统响应某些条件而产生的某一个事件

信号可以被生成捕获响应忽略


sig:准备捕获或忽略的信号

func:接收到指定信号后将要调用的函数

阅读全文
0 0
原创粉丝点击