摘要: 僵尸进程:本质是进程描述符task_struct;维护子进程的状态,包括子进程ID,终止状态以及进程的资源利用情况(cpu时间,内存)int wait(int*stat_loc):成功之后返回终止子进程的pid,失败返回-1,并设置errno1、wait调用堵塞进程直到有任一一个子进程终止,则立刻返... 阅读全文
posted @ 2015-06-25 21:48 kkshaq 阅读(1594) 评论(0) 推荐(1) 编辑
摘要: 子进程不产生僵尸进程的方法:方法一:signal(SIGCHLD, SIG_IGN);父进程不必等待子进程结束,子进程由init进程负责回收因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。如果将此信号的处理方式设为忽略,可让内核把僵尸子进程转交给init进程去处... 阅读全文
posted @ 2015-06-25 20:54 kkshaq 阅读(898) 评论(0) 推荐(0) 编辑
摘要: 父子进程共享文件描述符:此说法,其实是父子进程共享文件表项(父进程和子进程共享同一个filetableentry)由于子进程是父进程的拷贝,子进程会拷贝父进程的进程描述符中的文件描述符表,可以说继承父进程的文件描述字(files_struct中的structfile*fd_array[NR_OPEN... 阅读全文
posted @ 2015-06-25 20:05 kkshaq 阅读(2610) 评论(0) 推荐(0) 编辑
摘要: 对于server端:以端口为通配符方式bind:对于服务器,bind(0,ip),则调用bind函数之后,就可以调用getsockname获取服务器得到的本地端口号以ip地址为通配地址bind,只有accept返回之后,调用getsockname(connfd,......)才会返回服务器得到的本地... 阅读全文
posted @ 2015-06-25 19:28 kkshaq 阅读(321) 评论(0) 推荐(0) 编辑
摘要: apue中:其中进程表项内部的数组又称为 进程打开文件表 另外一个角度:从linux内核角度开:task_struct是进程描述符对应上面的进程表项,在task_struct描述符中有struct file_struct*类型的变量file,指向struct file_struct结构。1.file... 阅读全文
posted @ 2015-06-25 17:03 kkshaq 阅读(386) 评论(0) 推荐(0) 编辑