我编写了一个简单的调试器程序,它可以执行控制台程序并将其输出发送到“out”和“err”文件,并从“in”文件中检索其输入。现在,我想扩展它的功能来运行 Python 脚本。为此,我想我可以让调试器只运行 Python 解释器并将 Python 解释器与文件接口。
但是当我在调试器中运行 Python 解释器时,我看不到任何输出,就像使用普通程序一样。调试器有非常详细的错误日志,我在错误日志文件中看不到任何错误。
我使用了“ps -A”,但调试器似乎已经启动了 Python 解释器,原因有两个:1)进程 ID 相差 1 和 2)调试器在我杀死 -9 python 解释器后立即退出(即说明文件描述符已连接)。这是 ps -All 的输出:
1 R     0  1565     1 88  80   0 -  1040 -      pts/0    00:01:45 debugger
0 S     0  1566  1565  0  80   0 -  7782 pipe_w pts/0    00:00:00 python.out
调试器是这样启动的(python.out 是 python 解释器的副本):
debugger python.out
所以我想我的问题是,有谁知道为什么这不起作用?Python 解释器对它的标准文件描述符做了什么奇怪的事情吗?
编辑:
- 我还注意到 python.out 无法使用 python.out > out_file 重定向其 IO - 这可能与调试器遇到的问题有关,也可能无关。 
- 调试器不使用块缓冲。 
- 以下是来自 /proc/pid/io 的一些 io 信息: 
调试器(我将一些长度为 21 的数据写入“in”文件)
rchar: 21
wchar: 21
syscr: 300222462
syscw: 1
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0
Python 解释器
rchar: 517268
wchar: 0
syscr: 93
syscw: 0
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0