1、fork函数父进程pid>0,子进程pid=0。
2、execlp函数可以执行从标准输入读入的命令。
3、内核时程序执行的唯一方法时调用一个exec函数。进程自愿终止的唯一方法时显式或隐式掉哦那个_exit、_Exit或exit()。
4、main函数之前回启动一个特殊的启动例程,结束后会启动终止处理程序。
5、进程存储空间安排:
环境表和环境变量字符串位于顶部栈之上。
6、setjump和longjmp:可实现跨越函数的goto的功能。longjmp可以跳转到setjump设定的位置。
7、僵死进程:一个已经终止,但是父进程尚未对其进行善后处理(获取终止子进程的相关信息、释放他仍占用的资源)的进程。
孤儿进程:指的是在其父进程执行完成或被终止后仍继续运行的一类进程。这些孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
8、对于父进程已经终止的所有进程,父进程都改变为init进程。
9、exec不创建新进程,只是用磁盘上一个新程序替换了当前进程的正文段、数据段、堆段和栈段。
10、设置用户ID或者设置组ID程序绝不应调用system函数。因为这个程序的超级用户权限可能执行fork和exec之后仍被保持下来。应直接使用fork和exec,而且在fork之后,exec之前改回普通权限。
11、3种特殊字符可使终端驱动程序产生信号:1)中断字符:delete或者是ctrl+c,产生SIGINT;2)退出字符:ctrl+\,产生SIGQUIT;3)挂起字符:ctrl+z,产生SIGTSTP。
12、会话:一个或多个进程组的集合。一个会话的几个进程组可分为一个前台进程组以及一个或多个后台进程组。
13、作业控制:允许在一个终端上启动多个作业(进程组),它控制哪一个作业可以访问该终端以及哪些作业在后台运行。
14、终端产生的信号总是从前台进程组连接到实际进程,后台进程的输出是否出现在终端是可选择的。
15、孤儿进程组:该组中每个成员要么是该组的一个成员,要么不是该组所属会话的成员。POSIX.1要求向新孤儿进程组处于停止状态的每一个进程发送挂断信号,接着又向其发送继续信号。处理了挂断信号后,子进程继续。
16、信号属软件中断。可以被屏蔽以及阻塞。
17、互斥量、读写锁、条件变量、自旋锁、屏障的定义和使用。
18、守护进程:生存期长的一种进程,常在系统引导装入时启动,尽在系统关闭时才终止。守护进程没有控制终端,且常用于服务器进程。
19、多线程程序推荐阻塞所有信号,然后创建一个线程处理信号。
20、IO多路转接:构造一张描述符列表,然后调用一个函数,直到这些描述符中的一个已准备好的IO时,该函数才返回。poll、pselect和select这3个函数可以执行IO多路转接。
21、记录锁:当第一个进程正在读或修改文件的某个部分时,使用记录锁可以阻止其他进程修改同一文件区。
22、管道中fd0为读而打开,fd1为写而打开。
23、系统过滤程序从标准输入读取数据,向标准输出写数据。当一个过滤程序即产生某个过滤程序的输入,又读取过滤程序的输出时,它就变成了协同进程。
24、慢系统调用:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应信号处理函数返回时,该系统调用可能返回一个EINTR错误。
04-03
08-14