背景条件:如果 我知道一个程序名 当我启动这个程序之后 这个程序有fork许多子进程 子进程可能调用类似system()调用外部命令的函数
问题:
我如何通过程序名 获取这个拥有许多子进程的程序的PID 也就是这些子进程的父进程PID
方法越简单越好。
也就是说 不管一个程序有多少子进程。通过什么方法 在只有一个程序名(带全路径的程序名,确定唯一程序,防止有其他路径重名程序)的前提下 找到这个程序运行时的pid
linux 关于 获取父进程PID问题
答案:3 悬赏:70 手机版
解决时间 2021-03-03 12:27
- 提问者网友:情歌越听越心酸
- 2021-03-02 23:35
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-03-03 00:37
读取/proc/pid/status文件,对于一个进程可以
# cat /proc/(pidof $(target_process))/status |grep "PPid"
# 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去调试。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯