Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: check if coproc has output



Hi Roman, I do not. I cannot even strace the process because it is an .exe invoked from a windows wsl environment, but it shouldn't
 be a problem regarding the handling of the int signal, other scripts I made in the same manner handle it properly..
I haven't mentioned this in the first place because I had similar problems in the past with pure linux pipelines.
I have now discovered this:

if I invoke the .exe directly, eg:

long_running_process.exe | while etc

the ctrl+c is handled correctly, whether if I enclose it in a function like this:

winclip(){
  local cmd=($DOTNET_PRJ/pasteclip/pasteclip.exe $args)
  $cmd "$@"
}

doing 

winclip | while etc

shows the ctrl-c problem

zsh (under wsl) is 5.4.2

Pier Paolo Grassi


Il giorno gio 19 gen 2023 alle ore 17:02 Roman Perepelitsa <roman.perepelitsa@xxxxxxxxx> ha scritto:
On Thu, Jan 19, 2023 at 4:34 PM Pier Paolo Grassi <pierpaolog@xxxxxxxxx> wrote:
>
> Hello, I want to populate an array from a long running process, something like:
>
> long_running_process | while read line
> do
>   array+=$line
> done
>
> problem is, since long_running_process does not continually produce output but only some times, when i try to interrupt this pipeline with ctrl-c I have to wait until it produces some output for the process to terminate (because, as I understand it, when it tries to write to the pipe it receives a sigpipe due to it being already closed)

When you press Ctrl-C, zsh sends SIGINT to long_running_process.
Ideally, it should honor the signal and terminate. Do you know why it
doesn't do that?

Roman.


Messages sorted by: Reverse Date, Date, Thread, Author