Linux查询进程pid,命令如下:
ps?-ef|grep?process_name
以上请用实际的服务进程名替换process_name.查询到的消息就包含进程pid
在/proc目录下有一堆以数字命名的文件,这些文件都是虚拟文件,文件名为进程的PID,文件内容为文本格式的进程信息,监控用它就行了
你用了pthread库,在链接的时候要加上
gcc
-lpthread
①c
-o
即可
child:
value=%d\n
此时value
=
父进程
(对应
pid
语句),等待子进程执行完成后(wait语句),打印parent:
,此时value
对于你补充问题的回答:
线程是在子进程里创建的,它只改变了子进程的value
(子进程和父进程的value处在不同的地址空间,互相没有关系,而子进程和它所创建的线程是在同一地址空间,所以线程可以改变子进程的value),
父进程没有创建线程,所以呢它的值不会被改变.
通过查看资料,发现一种比较简单的方法就是在代码中使用printf将当前线程的id打印出来.
而这也分成两种情况:
① 如果是pthread,则使用,
#include pthread.h
pthread_t pthread_self(void);
#include sys/types.h
pid_t gettid(void);
获取线程所在的进程的id,方法如下:
#include unistd.h
pid_t getpid(void);
pid_t getppid(void);
所以,我们在代码中使用如下的语句打印:
printf("\ntid=%lu, pid=%lu\n", gettid(), getpid());
这样就能获取当前代码所在的线程和进程了.
根据打印出来的进程的pid,获取进程名的方法是:
ls -lh /proc/pid/exe
查看thread id的方法有:
ps命令指定-L命令选项可以用来查看进程下所包含的所有线程.
查看进程下当前有哪些task,这些task指的就是线程.
你的意思是,知道某个进程的PID,然后希望找到该进程执行的程序的路径吧
可以使用这种方法:
ls -l /proc/$PID/exe
上面的$PID就是那个PID,比如
就是该程序的完成路径