在“线程手册”页中,有人提到
调用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
My PID,F: 5219,PPID : 5214
My PID在G: 5219,PPID : 5214
我需要知道我在这里是否误解了什么。
发布于 2019-09-02 10:17:44
上面提到的解释是,
LinuxThreads实现在许多方面偏离了POSIX.1规范,包括: 对getpid(2)的调用在每个线程中返回不同的值。
但是您很可能使用的是POSIX Threads,而不是The LinuxThreads。在POSIX中,线程属于一个进程,每个进程都有相同的PID。
https://stackoverflow.com/questions/57755149
复制相似问题