Я пытаюсь использовать pthreads для создания двух новых процессов, каждый из которых использует файловый дескриптор для чтения или записи из канала.
У меня есть основная функция, которая развивает себя и выполняет создатель execl()
с помощью execl()
. Оттуда я запускаю pthreads для создания двух процессов, каждый из которых получает другой конец трубы. Затем я жду окончания потоков, а затем продолжаю делать другие вещи.
Вот мой код:
int createThreads(int fds[])
{
int retcd = OK; /* return code */
pthread_t talk1, talk2;
int ret1, ret2;
// Create both talk agent processes
ret1 = pthread_create(&talk1, NULL, talk, &fds[0]); // read
ret2 = pthread_create(&talk2, NULL, talk, &fds[1]); // write
// Wait for both processes to finish at the same time
pthread_join(talk1, NULL);
pthread_join(talk2, NULL);
return(retcd);
}
Функция разговора принимает дескриптор файла и делает с ним кое-что. Проблема в том, что когда я запускаю ps -f u [username]
я не вижу, как возникают два процесса pthreads. Что-то не так с синтаксисом?
pthread_create
не создает новые процессы - он создает новые потоки в одном процессе. Если вы хотите видеть потоки в ps, вам нужно использовать опцию H - как ps H -fu [username]
.