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

renga_in_stack

在 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

getpid() 返回意外值

来自分类Dev

为什么父 pid 返回的值与 getpid() 不同?

来自分类Dev

需要当前进程的PID,getpid()返回-1

来自分类Dev

os.getpid返回不存在的PID?

来自分类Dev

os.getpid在多处理中的唯一性

来自分类Dev

getpid如何工作?

来自分类Dev

使用putenv和getpid在C中使用CreateProcess出错

来自分类Dev

Android Studio-无法完成Gradle执行-getPid()

来自分类Dev

Android Studio-无法完成Gradle执行-getPid()

来自分类Dev

stm32f4 g ++错误,涉及新库_kill_r,_kill,_getpid_r,_getpid,

来自分类Dev

Android Studio Gradle错误错误:原因:net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions.getPid()I

来自分类Dev

来自带有vfork()和-lpthread的孙子的getpid()的错误结果

来自分类Dev

Android Studio Gradle错误错误:原因:net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions.getPid()I

来自分类Dev

运行许多python线程并获取每个线程的返回值

来自分类Dev

运行许多python线程并获取每个线程的返回值

来自分类Dev

是否可以从与创建进程的线程不同的线程中等待子进程?

来自分类Dev

在不同的线程中执行每个QTModbus响应

来自分类Dev

java.io.File.isFile() 在不同的线程中返回不同的值

来自分类Dev

如何确保每个线程在不同的进程对象上工作以避免线程安全问题?

来自分类Dev

Windows 10中每个进程的最大线程数限制?

来自分类Dev

Jmeter:是否可以为Jmeter中的每个线程增加变量的值?

来自分类Dev

ServerEndpoint的每个方法是否由不同的线程执行?

来自分类Dev

Java中的线程与C ++中的线程是否不同?

来自分类Dev

Lambda表达式为列表中的每个不同值返回一个结果

来自分类Dev

Lambda表达式可为列表中的每个不同值返回一个结果

来自分类Dev

不同线程中SharedPreference的访问值

来自分类Dev

不同进程的线程通信

来自分类Dev

从C ++ 11中的线程返回值

来自分类Dev

在线程中安全返回浮点值

Related 相关文章

  1. 1

    getpid() 返回意外值

  2. 2

    为什么父 pid 返回的值与 getpid() 不同?

  3. 3

    需要当前进程的PID,getpid()返回-1

  4. 4

    os.getpid返回不存在的PID?

  5. 5

    os.getpid在多处理中的唯一性

  6. 6

    getpid如何工作?

  7. 7

    使用putenv和getpid在C中使用CreateProcess出错

  8. 8

    Android Studio-无法完成Gradle执行-getPid()

  9. 9

    Android Studio-无法完成Gradle执行-getPid()

  10. 10

    stm32f4 g ++错误,涉及新库_kill_r,_kill,_getpid_r,_getpid,

  11. 11

    Android Studio Gradle错误错误:原因:net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions.getPid()I

  12. 12

    来自带有vfork()和-lpthread的孙子的getpid()的错误结果

  13. 13

    Android Studio Gradle错误错误:原因:net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions.getPid()I

  14. 14

    运行许多python线程并获取每个线程的返回值

  15. 15

    运行许多python线程并获取每个线程的返回值

  16. 16

    是否可以从与创建进程的线程不同的线程中等待子进程?

  17. 17

    在不同的线程中执行每个QTModbus响应

  18. 18

    java.io.File.isFile() 在不同的线程中返回不同的值

  19. 19

    如何确保每个线程在不同的进程对象上工作以避免线程安全问题?

  20. 20

    Windows 10中每个进程的最大线程数限制?

  21. 21

    Jmeter:是否可以为Jmeter中的每个线程增加变量的值?

  22. 22

    ServerEndpoint的每个方法是否由不同的线程执行?

  23. 23

    Java中的线程与C ++中的线程是否不同?

  24. 24

    Lambda表达式为列表中的每个不同值返回一个结果

  25. 25

    Lambda表达式可为列表中的每个不同值返回一个结果

  26. 26

    不同线程中SharedPreference的访问值

  27. 27

    不同进程的线程通信

  28. 28

    从C ++ 11中的线程返回值

  29. 29

    在线程中安全返回浮点值

热门标签

归档