我正在尝试使用pthreads创建两个新进程,每个进程使用一个文件描述符来读取或写入管道。
我有一个主要功能,它使用execl()
分叉并执行pthread创建者。从那里,我运行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);
}
talk函数接受文件描述符并用它做一些事情。问题是,当我运行ps -f u [username]
时,我似乎无法看到两个pthreads进程产生。语法有问题吗?
答案 0 :(得分:2)
pthread_create
不会创建新进程 - 它会在同一进程中创建新线程。
如果你想在ps中看到线程,你需要使用H选项 - 比如ps H -fu [username]
。