You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'd expect the child process to be reparented to PID 1 (init) and continue running.
How do you start your C# app? If you start it from a terminal emulator and close the window, then that could cause a SIGHUP to be sent to the processes using that tty, including the child process of your app. Or do you start the app from cron?
I tested when starting from Rider IDE, and stopped the app in 3 ways:
Rider stop button
Let the app exit without doing any await on the Process
Sending SIGKILL from htop
And all of these resulted in the new Process closing
In my use case, the started "child" process must survive any way the c# app might close/crash
Description
I'm trying to start a new Process in a multiplatform way (Win and Linux) and make the new process not a child process of the running C# App.
I found this code snippet online for running a process as non-child:
This still spawns the new process as a child process.
After a lot of searching, I ended up with this setup:
However, this is not easily portable and requires the actual arguments to be already concatenated, which makes some mistakes possible.
Reproduction Steps
Try to use the first example to spawn a new process as non-child, on a Linux system.
Expected behavior
There should be an easy way to run a process as non-child that works on all platforms.
Actual behavior
The spawned process is a child of the app and is terminated when the c# app exits.
Regression?
No response
Known Workarounds
It is possible to call
/bin/sh
with thenohup
and&
to instruct it to make a new detached process, but this is not a portable setup.Configuration
.NET 8
Linux (Fedora 40)
x64
Other information
No response
The text was updated successfully, but these errors were encountered: