扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Linux查询进程pid,命令如下:
站在用户的角度思考问题,与客户深入沟通,找到大柴旦网站设计与大柴旦网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站制作、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖大柴旦地区。
ps -ef|grep process_name
以上请用实际的服务进程名替换process_name。查询到的消息就包含进程pid
在/proc目录下有一堆以数字命名的文件,这些文件都是虚拟文件,文件名为进程的PID,文件内容为文本格式的进程信息,监控用它就行了
你用了pthread库,在链接的时候要加上
gcc
-lpthread
1.c
-o
1
即可
子进程(对应pid==0语句)调用pthread接口创建线程,在县城内将value赋值5,然后打印
child:
value=%d\n
此时value
=
5
父进程
(对应
pid
语句),等待子进程执行完成后(wait语句),打印parent:
value=%d\n
,此时value
=
对于你补充问题的回答:
线程是在子进程里创建的,它只改变了子进程的value
(子进程和父进程的value处在不同的地址空间,互相没有关系,而子进程和它所创建的线程是在同一地址空间,所以线程可以改变子进程的value),
父进程没有创建线程,因此它的值不会被改变。
通过查看资料,发现一种比较简单的方法就是在代码中使用printf将当前线程的id打印出来。
而这也分成两种情况:
1. 如果是pthread,则使用,
#include pthread.h
pthread_t pthread_self(void);
2. 如果不是pthread,即是由内核创建的线程,则使用,
#include sys/types.h
pid_t gettid(void);
获取线程所在的进程的id,方法如下:
#include sys/types.h
#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
lrwxrwxrwx 1 root root 0 Jan 1 20:48 /proc/pid/exe - ...
sh-3.2#
查看thread id的方法有:
1. sh-3.2# ps -efL | grep process,
ps命令指定-L命令选项可以用来查看进程下所包含的所有线程。
2. sh-3.2# ls -l /proc/pid/task/
查看进程下当前有哪些task,这些task指的就是线程。
你的意思是,知道某个进程的PID,然后希望找到该进程执行的程序的路径吧
可以使用这种方法:
ls -l /proc/$PID/exe
上面的$PID就是那个PID,比如
$ ls -l /proc/2594/exe
lrwxrwxrwx 1 jason jason 0 Oct 16 17:15 /proc/2594/exe - /home/jason/download/qterm-0.5.12/build/src/qterm
$ ls -l /proc/2094/exe
lrwxrwxrwx 1 jason jason 0 Oct 16 17:10 /proc/2094/exe - /bin/bash
后面分别指向的是 home/jason/download/qterm-0.5.12/build/src/qterm 和 /bin/bash
就是该程序的完成路径
java获取linux进程pid错误需要用ps-ef命令。使用ps-ef命令获取所有的PID进行筛选出反射机制,使用JDK9新增加的API就可以不显示错误了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流