【Linux C】进程控制

来源:互联网 发布:淘宝店网址怎么复制 编辑:程序博客网 时间:2024/06/06 00:50

1.        程序—进程—进程ID—pit_t类型。

2.        Get pid();取得进程IDgetppid();取得父进程ID。

a)         getuid();geteuid();   getgid(); getegid(); 取得用户ID及组ID。

3.        Fork函数创建新的进程。 Pid_tfork(void);

a)        Fork函数不需要参数。

b)        对于父进程fork函数返回创建子进程pid号。

c)        对于子进程fork函数返回0, 系统0号进程为内核进程,以示区别。

d)        若创建子进程错误,则fork函数返回-1。

e)        创建子进程复制父进程进程空间,包括数据段和堆栈段。共享代码段。

4.        Vfork函数创建共享父进程空间的子进程,且子进程一定比父进程先运行。

5.        不要在任何函数调用中使用vfork函数,避免函数栈帧空间的多次返回。

6.        Void exit(int);函数会深入内核注销掉进程的内核数据结构。并且释放进程的资源。

a)        Exit函数的参数表示退出的状态。

7.        Exit函数为封装了Linux系统调用_exit函数,exit函数在用户空间做善后工作如清理用户I/O缓冲区,将内容写入磁盘等。以后进入内核释放用户进程的地址空间。

8.        调试多进程:

a)        设置跟踪流: set follow-fork-mode [parent|child]跟踪流选项。

b)        set detach-on-fork [on|off] set指定的进程将被调试,另一个进程将被停止。

c)        attach命令:没看懂!待查资料。

9.        exec搜寻文件系统中的文件,并将内容复制到exec函数的地址空间,取代原进程的内容。实现讲磁盘中的程序加载到内存中。Exec几乎不改变进程的身份属性。

a)        execl(); execle();execv();  execve(); execlp();  execvp();

10.    exech函数执行解释器文件(如shell脚本)时,解释器文件中命令行参数在前,exec函数传递给新程序的命令行在后。

11.    使用system函数调用shell命令。

a)        Int system(const char *cmdstring);

b)        System的返回状态。

c)        System实现过程中调用fork及exec执行效率偏低,但是函数添加了出错处理,信号处理,及wait函数避免出现僵尸进程。

12.    Wait函数等待子进程的退出,并获得起退出的状态信息,但只能等待一个结束的进程。

13.    Waitpid函数等待一个指定的进程结束。且可以不阻塞的等待一个进程。

14.    当父进程调用fork()函数创建子进程,而不用wai函数取得子进程的结束状态信息时,僵尸进程会出现。僵尸进程放弃了几乎所有系统资源包括进程空间,因而僵尸进程不能执行,虽然僵尸进程占用的内存微乎其微且不能被CPU调用,但是僵尸进程一直存在在系统中知道父进程取得结束状态信息。 Linux有严格的进程数目限制,如果僵尸进程达到一定数目是,系统中将不能产生新的进程。

15.    Linux中 Init进程领养所有的孤儿进程,会永远调用wait函数避免产生僵尸进程。

16.    Wait3和wait4函数输出错误的统计信息。

0 0
原创粉丝点击