-
进程标识
-
fork函数
pid_t fork(void); //子进程返回 0,父进程返回子进程ID;出错返回 -1.
例如:
pid_t pid;
pid = fork();
if(pid > 0)
{
//父进程
}
else if(pid = 0)
{
//子进程
}
else
{
//error
}
1、作用
创建子进程。
2、注意要点
a. 子进程是父进程的副本,子进程和父进程继续执行fork后的代码;
b. fork后,一般无法确定子进程和父进程哪个先执行;
c. fork与I/O函数之间的关系
d. 文件共享
父进程的所有打开文件描述符都被复制到子进程;父进程和子进程每个相同的打开文件描述符共享一个文件表项;共享同一个文件偏移量;
在fork之后处理文件描述符有以下两种常见的情况:
(1)、父进程等待子进程完成。在这种情况下,父进程对文件描述符不做任何处理,子进程会更新任一共享文件描述符的文件偏移量。
(2)、父子进程各自执行不同的代码。在这种情况下,父子进程各自关闭它们不需使用的文件描述符。
fork失败的两个原因:
(1)、系统中已经有太多的进程(表示出现问题)。
(2)、进程总数超过了系统限制。
fork两种用法:
(1)、父进程希望复制自己,使父子进程同时执行不同的代码。
(2)、一个进程要执行一个不同的程序。