永发信息网

linux 关于 获取父进程PID问题

答案:3  悬赏:70  手机版
解决时间 2021-03-03 12:27
  • 提问者网友:情歌越听越心酸
  • 2021-03-02 23:35
背景条件:如果 我知道一个程序名 当我启动这个程序之后 这个程序有fork许多子进程 子进程可能调用类似system()调用外部命令的函数
问题:
我如何通过程序名 获取这个拥有许多子进程的程序的PID 也就是这些子进程的父进程PID

方法越简单越好。
也就是说 不管一个程序有多少子进程。通过什么方法 在只有一个程序名(带全路径的程序名,确定唯一程序,防止有其他路径重名程序)的前提下 找到这个程序运行时的pid
最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-03-03 00:37
读取/proc/pid/status文件,对于一个进程可以

# cat /proc/(pidof $(target_process))/status |grep "PPid"
全部回答
  • 1楼网友:一秋
  • 2021-03-03 02:20
if parent program is /usr/bin/tail, you excecut it as "/usr/bin/tail -f x.log", you can get its pid by following sample: yibox ~ # ps -ef | grep '\/usr\/bin\/tail' | gawk '{print $2}' 5399
  • 2楼网友:廢物販賣機
  • 2021-03-03 01:46
getppid() 获取父进程 id, getpid() 获取当前进程 id. 比如 int main() { int pid = fork(); if (pid == 0) { // child printf ("parentid is %d\n", getppid()); } esle { printf("i'm parent, id %d\n", getpid()); wait(null); } return 0; } 再就是程序编译没错,但是运行时出现“实时信号 2” 没有源码,谁也帮不上你。 你可以用 gdb去调试。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯