저는 세마포어를 사용하여 같은 기능을 동시에 처리하는 C 프로젝트를 작업 중입니다. 내가 리눅스에서 루트 사용자로 실행할 때 완벽하게 작동한다. 하지만 다른 사용자가 실행하면 스크립트가 실행되지 않고 세마포 배열에 세마포를 남깁니다. 아무도이 문제에 대한 해결책을 알고 있습니까? 내가 세마포어와 경험이 없기 때문에다른 사용자의 세마포어가 작동하지 않습니다.
int main(int argC, char* argv[]) {
pthread_t thr[argC-1];
int indexes[argC-1];
int i,j;
for(j=0; j<(argC-1); j++) {
indexes[j] = atoi(argv[j+1]);
pthread_create (&thr[j], NULL, (int *) &stabtest, (void *) &indexes[j]);
}
sem_init(&mutex, 0, 1);
for(j=0; j<(argC-1); j++) pthread_join(thr[j], NULL);
// Destroy semaphore
sem_destroy(&mutex);
// Exit
exit(0);
}
int stabtest(void *ptr) {
sem_wait(&mutex); // down semaphore
// Other code ...
sem_post(&mutex); // up semaphore
pthread_exit(0); // exit thread
}
이 코드는 실제로 인터넷에서 발견
여기 내 코드입니다. 그래서이 코드가 동시에 병렬로 함수를 실행하는 것이 올바른지 확신 할 수 없습니다. 하지만 그것은 루트 사용자를 위해 작동하므로 코드가 더 많거나 적은 것 같습니다.
감사합니다.