以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
使用 CreateProcess
函数来启动外部程序并执行命令时,lpCommandLine
参数是非常重要的。这个参数应该包含要执行的完整命令字符串。在您的情况中,您试图使用 powershell.exe
来执行 python
命令,并且在尝试通过管道与这个子进程交互时遇到了问题。
问题可能在于 lpCommandLine
参数的设置方式。当您传入 "powershell.exe python"
时,这意味着您正在尝试让 PowerShell 执行名为 python
的命令,而不是在 PowerShell 中运行 Python 脚本或命令。因此,当您尝试向该进程写入更多命令时,这些命令可能没有被正确解释或执行。
相比之下,当您使用 "powershell.exe python -i"
时,您实际上是在告诉 PowerShell 在交互模式下运行 Python,这意味着您可以继续向该进程写入命令并看到输出。
为了解决这个问题,您可以尝试以下方法之一:
- 使用正确的命令行参数启动 Python 解释器。例如,您可以尝试使用
"powershell.exe -Command 'python -c "your python command here"'"
来执行特定的 Python 命令。这样,您可以直接在命令行中执行 Python 代码,而无需进入交互模式。 - 如果您确实需要进入 Python 的交互模式,并希望与 Python 子进程进行交互(例如读取输出并发送更多命令),您可能需要使用更复杂的方法来处理管道和输入/输出流。这通常涉及到创建管道、设置标准输入/输出流以及正确地处理进程的输入和输出。
请注意,使用 CreateProcess
函数来启动外部程序并与之交互是一个相对复杂的任务,需要正确处理各种细节以确保程序的正常运行。此外,由于您正在与 PowerShell 和 Python 交互,可能还需要考虑命令行参数和环境的兼容性问题。