pthread_kill
OS/리눅스 & 유닉스 2012. 2. 16. 08:44
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
void *t_function(void *data)
{
char a[100000];
int num = *((int *)data);
struct timeval tm;
pthread_detach(pthread_self());
printf("Thread Start\n");
tm.tv_sec = 3;
tm.tv_usec = 0;
select(0, NULL, NULL, NULL, &tm);
printf("Thread end\n");
}
int main()
{
pthread_t p_thread;
int thr_id;
int status;
int a = 100;
printf("Before Thread\n");
thr_id = pthread_create(&p_thread, NULL, t_function, (void *)&a);
if (thr_id < 0)
{
perror("thread create error : ");
exit(0);
}
for ( ; ; ) {
struct timeval tm;
tm.tv_sec = 0;
tm.tv_usec = 500000;
select(0, NULL, NULL, NULL, &tm);
status = pthread_kill(p_thread, 0);
if ( status == ESRCH ) {
printf("Thread ID[%d] not exist..\n", p_thread);
return 0;
} else if ( status == EINVAL ) {
printf("Thread ID[%d] is yet alive\n", p_thread);
} else {
printf("Thread ID[%d] is yet alive\n", p_thread);
}
}
return 0;
}
pthread_kill
pthread_kill 은 대상 thread에게 signal을 전달하는 기능 수행
SYNTAX
int pthread_kill(pthread_t thread, int sig);
RETURN VALUE
성공 : 0
실패 : ERROR
ERRORS
ESRCH : thread ID로 해당 thread를 찾을 수 없는 경우
EINVAL : 잘못된 signal number를 전달할 경우
'OS > 리눅스 & 유닉스' 카테고리의 다른 글
Thread Functions for POSIX, Solaris and Windows NT (0) | 2012.03.14 |
---|---|
sigwaitinfo (0) | 2012.02.21 |
grep 명령어 (0) | 2012.02.13 |
grep, egrep, fgrep & 정규식 (0) | 2012.02.13 |
shell 조건문 (0) | 2012.02.11 |