3 ms·
Coproc Tutorial (2011)
- o11c 3y agoI've never found a case where coproc actually solves a problem I'm facing. Note that bash's version is slightly different but pretty close. Also, bash supports `lastpipe` nowadays so you don't have to use this as a workaround for that issue, and `< <()` is more often the useful thing for custom pipeline composability, and without suffering from the "only one coprocess may exist" limitation.
- 0x45696e6172 3y agoI use it to launch GUI apps from the terminal, e.g. coproc 'nemo .'
- wiml 3y agoIs that better than using ordinary job control (nemo . &) ?
- cryptonector 3y agoPossibly. There are race conditions with `wait` for `$somepid` because shells kinda have to reap processes as soon as possible, but that means that your `$somepid` can be stale and even refer to some other process. If you have a pipe from the process' stdout and/or stderr then when you can try to read from that pipe to know if the process exited -- you might still lose the exit status, unless you run the program like `(the_program ...; stat=$?; printf '%s\n' $stat 1>&2; exit $stat) &` and then read the exit status from the stderr pipe.
- wavemode 3y agoMost GUI apps are noisy as hell in their output. Though I guess there's always nemo . >/dev/null 2>&1 &
- nerdponx 3y agoI used it once for configuring Herbstluftwm and Dzen, but it was very fussy and I ended up refactoring my script later into separate processes.
- cryptonector 3y agoYou can get the pid of the process in the process redirection case (`while read ...; do ...; done < <(some_program)`) but not in the | case (`some_program | while read ...; do ...; done`).