execl 함수로 실행시킨 프로세르를 쓰레드로 관리하기..
글쓴이: ar / 작성시간: 수, 2004/08/25 - 4:37오후
execlp 함수로 기존의 실행 프로그램을 여러개 실행시키고 그 프로세스들을
주기적으로 교체하면서 실행시킬 수 있는 방법이 없을까요? 보통 그 프로세스가
종료하기 이전에는 execlp 함수가 종료하지 않기 때문에.. mutex_lock의
unlock가 안되고 있습니다. ㅡ.ㅜ 프로그램은 대략 아래와 같은 코드형태로
테스트 하였습니다. ㅡ.ㅜ
pthread_mutex_t lock; int main() { pthread_t p1, p2; pthread_mutex_init(&lock, NULL); pthread_create(&p1, NULL, test1, NULL); pthread_create(&p2, NULL, test2, NULL); pthread_join(p1, NULL); pthread_join(p2, NULL); return 0; } void *test1(void *arg) { pthread_mutex_lock(&lock); execlp("xterm", "xterm", "-e" , "ls -alRF | more", NULL); pthread_mutex_unlock(&lock); sleep(5); pthread_exit(0); } void *test2(void *arg) { pthread_mutex_lock(&lock); execlp("xterm", "xterm", "-e", "ps -ef | more", NULL); pthread_mutex_unlock(&lock); sleep(5); pthread_exit(0); }
Forums:
pthread와 execlp의 조합이라니뭔가 좀 안어울리는 듯하네요.
pthread와 execlp의 조합이라니
뭔가 좀 안어울리는 듯하네요.
exec 계열은 해당 프로세스를
명시한 프로세스로 바꿔치기 하는 것으로
fork와 같이 쓰죠..
(프로세스와 쓰레드의 개념을 헷갈리신듯.)
execlp를 system 같은 걸로 바꿔보시면 어떨까요?
아니면 pthread API들을 process와 관련된 system call로 교체를 하심이.
댓글 달기