Đây là mã của tôi:WriteLine để chạy quá trình
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]}");
}
}
}
Tôi có một quá trình id của nó. Điều đó làm việc tốt Sau đó, tôi đã cố gắng để gửi một cái gì đó để stdin của nó. Điều đó đã ném một InvalidOperationException. Lưu ý: ngoại lệ xảy ra khi tôi cố gắng lấy StandardInput, không phải khi tôi cố gắng viết cho chúng tôi WriteLine.
Tôi tin rằng tôi biết lý do tại sao tôi có ngoại lệ. Quá trình này không được khởi động bởi ứng dụng của tôi, vì vậy tôi không bao giờ có cơ hội để đặt RedirectStandardInput thành true.
Mục tiêu của tôi là có thể sử dụng ứng dụng này để gửi văn bản tới giao diện điều khiển tương tác python (hoặc một ngôn ngữ khác). Tôi vẫn muốn có thể tự nhập văn bản vào dấu nhắc python, nhưng tôi cũng muốn kiểm soát ứng dụng của mình.
Làm cách nào để thực hiện việc này?
Điều này có giúp ích cho bạn không? http://stackoverflow.com/questions/10390829/is-it-possible-to-talk-with-running-process – ragerory
Đối với những người nhầm lẫn: tiền tố '$' là một phần của C# 6 (nội suy chuỗi). –
@ragerory Tôi thấy điều đó, nhưng điều đó giả định rằng bạn kiểm soát cả hai quy trình. Tôi không kiểm soát được dấu nhắc python. Tôi có thể viết một quá trình khởi động thông qua đó tôi sẽ bắt đầu bất cứ điều gì tôi muốn gửi một cái gì đó đến, nhưng đó là một chút clunky. – phil