Как сохранить cmd.exe начинается с псевдоконсоль, даже после выходов родителей?C#

Место общения программистов C#
Ответить
Anonymous
 Как сохранить cmd.exe начинается с псевдоконсоль, даже после выходов родителей?

Сообщение Anonymous »

Итак, у меня есть Server.cs , который порождает Child Daemon.exe следующим образом:
bool success = CreateProcess(
null,
"daemon.exe",
IntPtr.Zero,
IntPtr.Zero,
false,
DETACHED_PROCESS,
IntPtr.Zero,
null,
ref si,
out pi
);
< /code>
Внутри демона я порождает cmd.exe следующим образом: < /p>
string app = @"C:\Windows\System32\cmd.exe";
bool success = CreateProcess(
null,
app,
IntPtr.Zero,
IntPtr.Zero,
false,
EXTENDED_STARTUPINFO_PRESENT,
IntPtr.Zero,
null,
ref si,
out pi
);
< /code>
Когда я убиваю Server.exe, cmd.exe также убит, что я хочу сохранить на неопределенный срок. Если я сломаю daemon.exe, используя что -то вроде console.readline (), он выживает на выходе на сервер, как предназначен для Depached_process, однако по какой -то причине Cmd.exe умирает, несмотря на то, что демон породил. Я предполагаю, что это потому, что cmd.exe все еще прикрепляется к консоли сервера, но я не знаю точно и не понимаю, почему < /p>
работает, если я поролк. Потеряйте функциональность псевдоконсола Alltogether, когда вывод превращается в новую консоль. < /p>
Изменить: < /p>
STARTUPINFOEX подготовка к daemon.cs :
IntPtr lpSize = IntPtr.Zero;
InitializeProcThreadAttributeList(IntPtr.Zero, 1, 0, ref lpSize);

STARTUPINFOEX si = new();
si.lpAttributeList = Marshal.AllocHGlobal(lpSize);

InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, ref lpSize);
si.StartupInfo.cb = Marshal.SizeOf();

UpdateProcThreadAttribute(
si.lpAttributeList,
0,
(IntPtr)PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE,
phPC,
(IntPtr)Marshal.SizeOf(phPC),
IntPtr.Zero,
IntPtr.Zero
);

PROCESS_INFORMATION pi = new();
< /code>
STARTUPINFOEX подготовка к server.cs :
STARTUPINFOEX si = new();
PROCESS_INFORMATION pi = new();


Подробнее здесь: https://stackoverflow.com/questions/794 ... rent-exits
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»