这里是我的代码:的WriteLine到已经运行的进程
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有一个过程。这工作得很好 然后我试图发送一些东西给它的stdin。抛出一个InvalidOperationException。注意:当我尝试获取StandardInput时,发生异常,而不是当我尝试使用WriteLine时。
我相信我知道为什么我得到了例外。该过程不是由我的应用程序启动的,所以我从来没有机会将RedirectStandardInput设置为true。
我的目标是能够使用此应用程序发送文本到Python交互式控制台(或其他语言)。我仍然希望能够自己输入文本到Python提示符,但我也想给我的应用程序控制。
我该怎么做?
这对你有帮助吗? http://stackoverflow.com/questions/10390829/is-it-possible-to-talk-with-running-process – ragerory
对于那些困惑的人:'$'前缀是C#6(字符串插值)的一部分。 –
@ragerory我看到了,但假设你控制这两个过程。我无法控制python提示符。我可以编写一个流程启动器,通过它我可以启动任何我想要发送的内容,但这有点笨拙。 – phil