Я создаю процесс из другого процесса в C # следующим образом:
process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "process.exe";
process.OutputDataReceived += ProcessOnOutputDataReceived;
Затем в отдельном потоке я вызываю:
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
Это позволяет мне иметь элементарный IPC междупроцессы.
Я обнаружил, что этот процесс наследует дескриптор открытого файла от родительского процесса.В результате родительский процесс больше не может работать с файлом.
Есть ли способ предотвратить это?Или я могу заставить дочерний процесс освободить дескриптор после его наследования?