首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`getpid()’在进程的每个线程中返回不同的值吗?

‘`getpid()’在进程的每个线程中返回不同的值吗?
EN

Stack Overflow用户
提问于 2019-09-02 10:13:51
回答 1查看 410关注 0票数 0

在“线程手册”页中,有人提到

调用getpid(2)在每个线程中返回不同的值

在LinuxThreads区。

我创建了两个线程,并在它们中打印PID。但在这两种情况下,PID是相同的。

代码语言:javascript
复制
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

我需要知道我在这里是否误解了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-02 10:17:44

上面提到的解释是,

LinuxThreads实现在许多方面偏离了POSIX.1规范,包括: 对getpid(2)的调用在每个线程中返回不同的值。

但是您很可能使用的是POSIX Threads,而不是The LinuxThreads。在POSIX中,线程属于一个进程,每个进程都有相同的PID

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57755149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档