Comment puis-je envoyer ctrl+c pour un processus en c#?

Je suis en train d'écrire une classe wrapper pour une ligne de commande exécutable. Ce fichier exe accepte entrée à partir de stdin jusqu'à ce que j'appuie sur ctrl+c dans l'invite de commande shell, auquel cas il imprime à la sortie, l'entrée vers la sortie standard stdout. Je veux simuler que ctrl+c appuyez sur dans le code c#, l'envoi de la commande kill pour un .Net objet de processus. J'ai essayé d'appeler le Processus.kill(), mais qui ne semble pas me donner quoi que ce soit dans le processus de StandardOutput StreamReader. Pourrait-il y avoir quelque chose que je ne suis pas en train de faire? Voici le code que j'utilise:

ProcessStartInfo info = new ProcessStartInfo(exe, args);
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);

p.StandardInput.AutoFlush = true;
p.StandardInput.WriteLine(scriptcode);

p.Kill(); 

string error = p.StandardError.ReadToEnd();
if (!String.IsNullOrEmpty(error)) 
{
     throw new Exception(error);
}
string output = p.StandardOutput.ReadToEnd();

cependant de sortie est toujours vide, même si je récupérer des données à partir de stdout quand je lance l'exe manuellement.
edit: c'est c# 2.0 btw

Pour ceux qui cherchent une réponse à cette question, le MedallionShell NuGet package contient une croix-plate-forme de mise en œuvre de cette. Sur Windows, il utilise la console de fixation de la méthode décrite ci-dessous, mais de manière plus sécuritaire, qui travaille autour de certains pièges.

OriginalL'auteur Kevlar | 2008-11-12