进程标志:
专用的进程号:0 = 交换进程 = 系统进程 它是内核的一部分;
1 = init进程 = 为所有孤儿进程的父进程
2 = pagedaemon = 页精灵进程
进程的一些特性:
进程号; 父进程号;实际用户号; 有效用户号; 实际组号; 有效组号;
fork 函数:
#include <sys/types.h>
#include <unistd.h>
pid_t fork();
调用一次,返回两次,在父进程中返回子进程的ID号,在子进程中返回0;在子进程中获取父进程是很简单的方式,但是在父进程中获取子进程没有入口函数,所以只能这么返回了;
子进程复制父进程的相关内容,包括数据空间,堆栈等;
现在并不是这么实现的,而是使用cow技术;
父进程和子进程运行的先后顺序不固定,取决于内核的实现;
子进程和父进程对打开的文件共享,这个问题是怎么解决的呢?尚未解决
vfork 函数:
与fork唯一不同的是就是保证子进程先运行,父进程后运行;还有子进程在父进程的地址空间中运行;
程序的退出:
exit; abort; return