正在读取 /proc/PID/maps 个短暂的进程
Reading /proc/PID/maps of short-lived process
我有一个二进制文件 exits/segfaults 在执行后不久。我试图在它退出之前读取这个二进制文件的 /proc/PID/maps 但没有成功。
我试过 cat /proc/($./binary [input] & echo $!)/maps
应该会导致 /proc/pidofprocess/maps 但总是得到 No such file or directory.
我的目标是查看在后续运行中将内容加载到何处。
你的解决方案 cat /proc/$(<pipeline>)/maps
在整个 <pipeline>
结束之前不会调用 cat
(即使你在其中使用 &
),所以你永远不会得到你的 maps
。
另一方面,
<pipeline> & cat /proc/${!}/maps
将立即return。当然,当您的二进制文件立即退出时,cat
可能仍然 运行 来不及捕获 /proc/${!}/maps
不过你可以试试:
while true; do; ./binary [input] & cat /proc/${!}/maps ; done
这会重新开始你的 binary
和 cat
之间的比赛一整天,并且 有时 cat
可能会赢(确实如此,在我的情况是 ls <nonexisting file>
而不是 ./binary
30 次中有 1 次)
这会在您的终端上打印出大量垃圾,但您可以通过重定向 cat
的输出来收集成功的地图:
while true; do; ./binary [input] & cat /proc/${!}/maps >> mymaps; done
优雅?号有效:希望如此!
我有一个二进制文件 exits/segfaults 在执行后不久。我试图在它退出之前读取这个二进制文件的 /proc/PID/maps 但没有成功。
我试过 cat /proc/($./binary [input] & echo $!)/maps
应该会导致 /proc/pidofprocess/maps 但总是得到 No such file or directory.
我的目标是查看在后续运行中将内容加载到何处。
你的解决方案 cat /proc/$(<pipeline>)/maps
在整个 <pipeline>
结束之前不会调用 cat
(即使你在其中使用 &
),所以你永远不会得到你的 maps
。
另一方面,
<pipeline> & cat /proc/${!}/maps
将立即return。当然,当您的二进制文件立即退出时,cat
可能仍然 运行 来不及捕获 /proc/${!}/maps
不过你可以试试:
while true; do; ./binary [input] & cat /proc/${!}/maps ; done
这会重新开始你的 binary
和 cat
之间的比赛一整天,并且 有时 cat
可能会赢(确实如此,在我的情况是 ls <nonexisting file>
而不是 ./binary
30 次中有 1 次)
这会在您的终端上打印出大量垃圾,但您可以通过重定向 cat
的输出来收集成功的地图:
while true; do; ./binary [input] & cat /proc/${!}/maps >> mymaps; done
优雅?号有效:希望如此!