2014-02-01 2 views
0

Я пытаюсь использовать pthreads для создания двух новых процессов, каждый из которых использует файловый дескриптор для чтения или записи из канала.Процессы pthreads не отображаются в выводах ps

У меня есть основная функция, которая развивает себя и выполняет создатель pthread, используя 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. Что-то не так с синтаксисом?

+2

[man ps] (http://unixhelp.ed.ac.uk/CGI/man-cgi?ps) –

ответ

2

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

Смежные вопросы