我在Linux机器(Ubuntu)上开发了一些带有一些线程的进程.我想知道如果PID和PPID对于进程的所有线程总是相同的,我怎么能从每个线程(使用glibc函数)获得LWP.
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 2588 2587 2588 0 11 00:05 ? 00:00:07 ./testsrv
root 2588 2587 2589 2 11 00:05 ? 00:23:17 ./testsrv
root 2588 2587 2590 0 11 00:05 ? 00:00:00 ./testsrv
root 2588 2587 2591 0 11 00:05 ? 00:00:03 ./testsrv
root 2588 2587 2592 0 11 00:05 ? 00:00:00 ./testsrv
root 2588 2587 2593 0 11 00:05 ? 00:00:00 ./testsrv
root 2588 2587 2594 0 11 00:05 ? 00:05:05 ./testsrv
root 2588 2587 2595 0 11 00:05 ? 00:00:00 ./testsrv
root 2588 2587 2596 0 11 00:05 ? 00:00:37 ./testsrv
root 2588 2587 2597 0 11 00:05 ? 00:00:00 ./testsrv
root 2588 2587 2601 0 11 00:05 ? 00:00:00 ./testsrv
Run Code Online (Sandbox Code Playgroud)
使用手册页中的gettid():
描述
gettid()返回调用者的线程ID(TID).在单线程进程中,线程ID等于进程ID(PID,由getpid(2)返回).在多线程进程中,所有线程都具有相同的PID,但每个线程都具有唯一的TID.有关更多详细信息,请参阅clone(2)中对CLONE_THREAD的讨论.返回值
成功时,返回调用进程的线程ID.