1 Linux中的父子进程
fork() 和 clone()系统调用可用来建立新的进程。这两个系统调用结束时,内核在系统的物理内存中为新的进程分配新的 task_struct 结构,同时为新进程要使用的堆栈分配物理页。Linux 还会为新的进程分配新的进程标识符。然后,新 task_struct 结构的地址保存在链表中,而旧进程的 task_struct 结构内容被复制到新进程的 task_struct 结构中。
在克隆进程时,Linux 允许两个进程共享相同的资源。可共享的资源包括文件、信号处理程序和虚拟内存等(通过继承)。当某个资源被共享时,该资源的引用计数值会增加 1,从而只有两个进程均终止时,内核才会释放这些资源。
2 Socket服务器简单并发框架
pid_t pid;
int fdListen, fdConnect;
fdListen = socket(...);
bind(fdListen, ...);
listen(fdListen, ...);
for (...;...;...)
{
fdConnect = accept(fdListen, ...);
if ((pid = fork()) == 0)
{
//子进程
//重要&#x