2012年12月20日

摘要: (2011-02-04 16:22)如果父进程在子进程之前退出,linux会重新为该父进程的所有子进程找到新的父亲。否则这些孤儿进程就会在退出时成为永远的僵死进程(wait4函数没有执行,僵死进程的进程描述符和栈空间不能释放)。父进程退出时会给子进程在当前进程组内找一个进程作为父亲,如果没找到就让init做它们的父亲。在父进程do_exit()最终会调用forget_original_parent()为孤儿进程找到父亲。forget_original_parent()定义在:linux/kernel/exit.c了解这个函数得区分几种子进程:1parent==real_parent的子进程这是 阅读全文

posted @ 2012-12-20 22:50 vv1133 阅读(724) 评论(0) 推荐(0) 编辑

摘要: (2010-10-24 18:38)内核层:主要数据结构:structpoll_table_entry{structfilefilp;wait_queue_twait;//内部有一个指针指向一个进程wait_queue_head_twait_address;//等待队列头部(等待队列有多个//wait_queue_t组成,通过双链表连接)};structpoll_table_page{structpoll_table_pagenext;structpoll_table_entryentry;structpoll_table_entryentries[0];};structpoll_wqueue 阅读全文

posted @ 2012-12-20 22:47 vv1133 阅读(483) 评论(0) 推荐(0) 编辑

摘要: (2010-10-23 23:21)用户层:poll()函数通过检验一组文件描述符来检测是否有特定的时间将在上面发生并在一定的时间内等待其发生。poll()接受一个指向结构"structpollfd"列表的指针,其中包括了你想测试的文件描述符和事件。事件由一个在结构中事件域的比特掩码确定。当前的结构在调用后将被填写并在事件发生后返回。当等待时间为0时,poll()函数立即返回,-1则使poll()一直挂起直到一个指定事件发生。下面是pollfd的结构。structpollfd{intfd;/*文件描述符*/shortevents;/*等待的事件*/shortrevents; 阅读全文

posted @ 2012-12-20 22:33 vv1133 阅读(515) 评论(0) 推荐(0) 编辑


Copyright © 2024 vv1133
Powered by .NET 8.0 on Kubernetes