Процессы pthreads не отображаются в выводе ps

0

Я пытаюсь использовать 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. Что-то не так с синтаксисом?

Теги:
pthreads

1 ответ

2

pthread_create не создает новые процессы - он создает новые потоки в одном процессе. Если вы хотите видеть потоки в ps, вам нужно использовать опцию H - как ps H -fu [username].

Ещё вопросы

Сообщество Overcoder
Наверх
Меню