I have a simple script which is used to start another program. This other program may sometimes yield a SIGSEGV
, which disrupts my output. I have therefore added a couple of lines which is supposed to temporarily redirect the stderr
to /dev/null
such that the SIGSEGV
is ignored. The following is a draft of my code:
exec 2> /dev/null
progname >& ./tmp/run.txt && run_status='OK'
exec 2>1
The problem is that the last line does not do what I want. The first line obviously works, and redirects the stderr
. The last line is supposed to return the stderr
back to where it was before (which I have only supposed is the same as stdout
).
Any help would be appriciated!
Another option is:
exec 3> /dev/stderr 2> /dev/null
progname >& ./tmp/run.txt && run_status='OK'
exec 2>&3
Or even
exec 3>&2 2> /dev/null
progname >& ./tmp/run.txt && run_status='OK'
exec 2>&3
That way the script preserves the separation of stdout and stderr for the script (ie. the scripts stdout and stderr can be redirected separately.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With