좀비 좀 죽여주세요..ㅠ.ㅠ
리눅스에서 단위시간동안 많은 process를 thread로 띄우면
원래 좀비가 생기는 지 궁금합니다.
아래의 허접한 source는 0.01초마다 하나씩 생성되어 자신의
ID를 뿌려주고 바로 죽어버리는 넘입니다.
원래 좀비가 이렇게 하면 생기는 지 궁금해서 test용으로 만들어 본
것인데 역시나 생기더군요...ㅠ.ㅠ
제가 단위시간동안 많은 thread를 띄웠다가 없앨 일이 있어서 그러는
데요 어떻하면 될까요? 고수님들의 조언 부탁드립니다.. (..) 넙죽
//////////////////////////////////////////////////////////////
#include
#include
#include
void* th_func(void* th_arg)
{
pthread_t self_index;
self_index = pthread_self();
pthread_detach(self_index);
printf("THREAD_ID %ld\n", self_index);
return NULL;
}
int main(void)
{
pthread_t tid;
while(1)
{
pthread_create(&tid, NULL, th_func, NULL);
usleep(10000);
}
return 0;
}
//////////////////////////////////////////////////////////////
Re: 좀비 좀 죽여주세요..ㅠ.ㅠ
넵..
조인은 안 시켜주어서 그러한 일이 생기는 것 같습니다.
잘은 모르겠지만.
int pthread_join(pthread_t thread, void **value_ptr);
를 main에 넣어 보세요~
Re: 좀비 좀 죽여주세요..ㅠ.ㅠ
시그널 처리를 한번 추가해보세여...(SIGCHLD)
[질문]pthread_join에 대해서
질문이 있는데요..
main 함수 부분에서 pthread_create(tid ,**********)식으로 해서 쓰레드를 생성했구
요.
해당 쓰레드가 제대로 종료되었는지 확인하기 위해서 함수를 하나 생성해서 그곳에
서 pthread_join(tid,thread_result)식으로 처리를 했는데 말이죠..
문제는 main에서 tid값을 join하는 함수에 넘겨서 처리하는데..
pthread_join에서 리턴되는 값은 0이 안되고 에러값들이 리턴됩니다.
pthread_join은 pthread_create하는 main에다가만 넣어야 하나요?
답변 부탁드려요.. ^^;
댓글 달기