在 Pthreads 手册页中,提到
对 getpid(2) 的调用在每个线程中返回不同的值
在 LinuxThreads 部分。
我创建了两个线程,并在其中打印了 PID。但在两者中,PID 是相同的。
int main ()
{
//pid_t pid;
pthread_t tid[2];
{
printf("In main, PID : %d, PPID : %d\n", getpid(), getppid());
pthread_create(&(tid[0]), NULL, &(f),NULL);
pthread_create(&(tid[1]), NULL, &(g),NULL);
pthread_join(tid[0], NULL);
pthread_join(tid[1], NULL);
}
return 0;
}
void *g()
{
printf("My PID in G : %d, PPID : %d\n", getpid(), getppid());
}
void* f()
{
printf("My PID in F : %d, PPID : %d\n", getpid(), getppid());
}
下面是我得到的输出,
在主要,PID:5219,PPID:5214
F中的我的PID:5219,PPID:5214
G中的我的PID:5219,PPID:5214
我需要知道我是否在这里误解了任何错误。
有一个提到的解释说,
LinuxThreads 实现在许多方面偏离了 POSIX.1 规范,包括:
对 getpid(2) 的调用在每个线程中返回不同的值。
但是您很有可能使用POSIX Threads
,而不是The LinuxThreads
。在 POSIX 中,线程属于一个进程,每个线程都有相同的PID
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句