I’ve been working on Dingus in my free time. I use it daily to load up configuration files full of environment variables to streamline my development process. It just loads a YAML file into a
HashMap and loads those into a
std::process::Command that is whatever program
$SHELL is (in my case it’s the Fish shell).
Lately I’ve noticed panes in TMUX dying after navigating around a bit, each of these panes that die have all been running
dingus. I’ve only noticed this as recently, so I’m not sure if this has always been a thing or what - but luckily I’ve found how to reproduce the issue: Tab complete and hit control-C to close Tab completion.
Every time I do that,
dingus dies, then the parent process that spawned the
dingus subshell. I don’t know a whole lot about systems level programming, but I believe this is happening because
SIGINT is being propagated upwards into the parent process. Why this is happening, I have no idea - but some googling leads me to believe that it would be worth trying to set
std::process::Command builder unfortunately doesn’t allow for child processes with a differing
gpid to be spawned, however, so I’m not sure how to proceed.
I think I’d like to find out how to verify that this is indeed what is happening, although I have no idea how. If it is, I’d like to figure out how to properly spawn my subshell in a manner that the child process dying due to a
SIGINT won’t kill the parent. It’s annoying
Any help at all would be awesome - thanks to the community for getting me into this mess