gpt4 book ai didi

c# - Writeline 到已经运行的进程

转载 作者:太空狗 更新时间:2023-10-29 23:38:11 28 4
gpt4 key购买 nike

这是我的代码:

static void Main(string[] args)
{
if(args.Length > 1)
{
int id;
if(int.TryParse(args[0], out id))
{
try
{
var p = Process.GetProcessById(id);
p.StandardInput.WriteLine(args[1]);
}
catch (ArgumentException)
{
Console.WriteLine($"Couldn't find process with id {id}");
}
}
else
{
Console.WriteLine($"Couldn't find process with id {args[0]}");
}
}
}

我通过它的 id 得到了一个进程。效果很好然后我试图向它的标准输入发送一些东西。这引发了 InvalidOperationException。注意:异常发生在我尝试获取 StandardInput 时,而不是我尝试使用 WriteLine 时。

我相信我知道为什么我得到了异常(exception)。该进程不是由我的应用程序启动的,因此我从来没有机会将 RedirectStandardInput 设置为 true。

我的目标是能够使用此应用程序将文本发送到 python 交互式控制台(或其他语言)。我仍然希望能够自己在 python 提示符下输入文本,但我也想授予我的应用程序控制权。

我该怎么做?

最佳答案

好吧,你说中要害了。除非你自己开始这个过程,否则你不拥有通信流 - 并且没有真正的(合理的)解决方法。

如果您默认运行控制台应用程序,它会在 cmd 中运行 - 这就是流的所有者。如果你想让你的应用程序“主持”这个过程,你就必须是启动它的人。您只需要学习调用 myHoster myApp 而不是 start myApp :)

您可能还想考虑对 PowerShell 主机进行编码。这将使您能够非常轻松地处理交互式 shell,尽管您必须学习使用 PowerShell 而不是 CMD :) 它非常容易实现,PowerShell 确实具有很强的可扩展性。

关于c# - Writeline 到已经运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710119/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com