제가 쓰고있는 프로그램은 프로세스 간 통신을 위해 Linux에서 FIFO 파이프를 사용하고 있습니다. 그것은 오히려 잘 해킹이지만, 상관없이 나는 문제가 있습니다.명명 된 파이프로 StreamWriter를 열려고하면 모노가 중단됩니다.
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 또는 둘 모두를 사용하여 열려고 할 때마다 프로그램이 중단됩니다. 오류 또는 아무것도. 디버거에서도 멈 춥니 다.
가장 좋은 부분은 ... 작동하는 데 사용되었습니다. 나는 프로세스 간 의사 소통이 작동했다. 그리고 나서 그것은 단지 설명 할 수 없게 멈췄다. 나는 여기서 본 것을 제외한 모든 것을 주석 처리하고, 내 시스템을 재시작하고, 파이프 등을 재사용했다. 뭐라 구요? 내 코드에 문제가 있습니까? 아니면 시스템의 다른 부분이 간섭합니까?
도움이 될지 모르겠지만 경로를 연결 한 과거에는 문제가있었습니다. 어느 날 그것이 효과가 있었고, 다음은 그렇지 않았습니다! 나를위한 솔루션 Path.Combine (...) 경로를 사용하여이 일관성없는 동작을 중지했습니다. –