Linux popen и system нельзя использовать в многопоточности ing - PullRequest
0 голосов
/ 26 августа 2018

Я хочу использовать popen или систему в многопоточности для выполнения моей программы, передачи параметра в программу и получения ее вывода. Но я обнаружил, что использую многопоточность для вызова того же времени (очень длинного), что и однопоточный вызов. Есть ли хороший способ?

void * _multi_threaded_call(void *arg){
    char *param = (char *)arg;    
    call_my_program(param);
    return NULL;
}


    //buff is the parameter that my 

         if(pthread_create(&tid[thread_id], NULL, &_multi_threaded_call, &buff) == -1){
                printf("fail to create pthread");
                exit(1);
            }
            if(pthread_join(tid[thread_id] , NULL) == -1){
                printf("fail to join pthread");
                exit(1);
            }

наконец, я использую popen, я не могу долго стоять, у вас есть хорошие способы? спасибо:)

FILE *fp = popen(cmd, "r");
...