怎么样通过pid得到进程的stderrpipe,求代码,谢谢大家了!

共 4 个回复


heimeil

三种情况:
1)这个进程如果能由你启动的话,直接在你的程序里用https://golang.org/pkg/os/exec/#Command来执行就直接能拿到全部标准流,或者用命令行参数重定向stderr到文件./cmd 2>/path/to/file,再读文件就行了;

2)如果是基础功能(系统组件或数据库之类),你不好去控制进程启动的话,这类标准组件都能配置日志输出到指定文件,配置后读文件就行了;

3)如果不允许你碰这个进程,只能通过pid去获取的话就比较麻烦,涉及Linux底层,拿不拿的到也还要看几种情况。

# 0

haha03942008

你好,我现在的问题是,我用command启动了一个进程。
我的程序是要时时监控我用command启动的进程的,因为要显示日志。
万一我的程序挂了,但是用command启动的进程没挂
我重启程序只能在数据库里面获取到pid,应为command启动的进程还存在,就不能再用command启动一次
现在只有pid。并且command启动的程序暂时还没有把日志重定向的功能

# 1

heimeil

先搞清楚你程序是怎么挂掉的

# 2

haha03942008

所以解决办法是,不要让程序挂掉…

# 3