当前位置: 技术问答>linux和unix
问个管理线程的问题-高手赐教
来源: 互联网 发布时间:2015-10-27
本文导语: 在2.4内核总有管理线程pthread_manager在进行线程管理,现在我想问的就是有哪些情况会导致 管理线程成为僵尸进程(zombie),如果非管理线程读取自己的线程堆栈越界会导致manager线程成为僵 尸吗?线程处理函数如果里...
在2.4内核总有管理线程pthread_manager在进行线程管理,现在我想问的就是有哪些情况会导致
管理线程成为僵尸进程(zombie),如果非管理线程读取自己的线程堆栈越界会导致manager线程成为僵
尸吗?线程处理函数如果里面的结构体或者全局的结构不是字节对齐的会导致有什么情况发生?
管理线程成为僵尸进程(zombie),如果非管理线程读取自己的线程堆栈越界会导致manager线程成为僵
尸吗?线程处理函数如果里面的结构体或者全局的结构不是字节对齐的会导致有什么情况发生?
|
导致僵尸线程的原因是一个父进程不去询问它的子进程的状态而产生的,你只能让你的子进程成为僵尸进程,而没办法让你的父进程成为僵尸进程,或者让与你自己无关的进程成为僵尸进程
|
tb基本上正确,导致僵尸线程的唯一原因是父进程没有处理其子进程送来的SIGCHLD信号,此信号是在进程结束时送给父进程的。父进程可以设定handler去处理此信号,当然也可以用wait调用来处理。
所以,如果manager是正常退出,问题在父进程。如果manager应该是永不结束的进程,它的父进程就没有必要对那个信号进行处理,也就是说问题在为什么manager会退出。
你问:
如果非管理线程读取自己的线程堆栈越界会导致manager线程成为僵尸吗?
如果非管理线程属于另一个进程,答案是“不会”;如果是同一个进程,答案是“可能”。
线程处理函数如果里面的结构体或者全局的结构不是字节对齐的会导致有什么情况发生?
字节不对齐可能会导致bus error,进程一般会dump core。
所以,如果manager是正常退出,问题在父进程。如果manager应该是永不结束的进程,它的父进程就没有必要对那个信号进行处理,也就是说问题在为什么manager会退出。
你问:
如果非管理线程读取自己的线程堆栈越界会导致manager线程成为僵尸吗?
如果非管理线程属于另一个进程,答案是“不会”;如果是同一个进程,答案是“可能”。
线程处理函数如果里面的结构体或者全局的结构不是字节对齐的会导致有什么情况发生?
字节不对齐可能会导致bus error,进程一般会dump core。
|
uClibc0.9.26线程库有一些bug,你可以到网张上看看www.uclibc.org,有哪些补丁或者bug