Linux -进程pid_t fork(void); 笔记

创建子进程

 pid_t fork(void);
                父进程返回进程ID,子进程返回0
                附加:
                        错误处理
                       1.若干ifelse
                       2.定义过一个errno,所以的系统调用出错都返回-1
                          然后将错误编号记录到errno中
                           通过strerror得到错误编号对应的描述
获得进程ID:
 
pid_t getpid(void);

获得父进程ID:

 pid_t getppid(void);

fork的注意点:

                  1.fork之后,父/子进程交替运行
                  2.如果父进程死亡,子进程活着,子进程叫做进程。孤儿进程托管给1号进程,1号进程也叫孤儿院。
                 3.如果父进程活着,子进程死亡,子进程就是一个僵尸进程。僵尸进程会占用少量系统资源。僵尸进程是有害的。
                弄死进程的方法:
                                  1.ctrl+c
                                  2.kill pid
                                   kill 不能杀死僵尸进程

进程虚拟成文件  /proc/pid/

进程优先级:(-20~19) 越小优先级越高
 
                 1.nice -n 优先级 程序名
                  2.renice 优先级 -p 程序名
                  3.top shift>/< r pid

写时拷贝:

 没有必要全部都拷贝一份,父进程什么时候修改,什么时候拷贝一份出来。称之为写时拷贝.

pid_t vfork(void); (尽量不使用)
特点:
 1.父进程阻塞,直到子进程运行完毕。
 2.就算写时,也不拷贝
 3.必须使用exit或者exec。
 4.每个系统对vfork的实现或多或少都有问题,不要使用。

猜你喜欢

转载自blog.csdn.net/porryCn/article/details/80443775