作者:坚强萝卜_854 | 来源:互联网 | 2023-02-04 15:50
我正在编写的程序是在linux中使用FIFO管道进行进程间通信.它充其量只是hacky,但无论我遇到什么问题.
if (!File.Exists(Path.GetTempPath() + "gminput.pipe"))
{
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/usr/bin/mkfifo", Arguments = Path.GetTempPath() + "gminput.pipe", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
proc.WaitForExit();
}
if (!File.Exists(Path.GetTempPath() + "gmoutput.pipe"))
{
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/usr/bin/mkfifo", Arguments = Path.GetTempPath() + "gmoutput.pipe", };
Process proc = new Process() { StartInfo = startInfo, };
proc.Start();
proc.WaitForExit();
}
using (StreamWriter outputPipe = new StreamWriter(Path.GetTempPath() + "gmoutput.pipe"))
using (StreamReader inputPipe = new StreamReader(Path.GetTempPath() + "gminput.pipe"))
{
Console.WriteLine("This code is never reached!");
}
我正在做的就是检查管道是否已经存在,如果没有,请调用mkfifo来创建它.这部分似乎工作正常,命名管道是正确创建的.每当我尝试打开它们时(使用StreamWriter,StreamReader或两者),程序就会挂起.没有错误或任何东西.它也挂在调试器中.
最好的部分是...它曾经工作过.我进行了进程间通信,然后它莫名其妙地停止了.除了你在这里看到的东西,重新启动我的系统,重新创建管道等,我注释掉了所有的东西,但没有用.是什么赋予了?我的代码有问题还是系统上的其他东西干扰了?