gpt4 book ai didi

c - `getpid()` 是否在进程的每个线程中返回不同的值?

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:21 27 4
gpt4 key购买 nike

在 Pthreads 手册页中提到

Calls to getpid(2) return a different value in each thread

在 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

我需要知道我是否误解了这里的任何内容。

最佳答案

在解释中提到,

The LinuxThreads implementation deviates from the POSIX.1 specification in a number of ways, including the following:

Calls to getpid(2) return a different value in each thread.

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

关于c - `getpid()` 是否在进程的每个线程中返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57755149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com