Re: wait and ctrl+Z

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 4 May 2012, Herbert Xu wrote:

Marc Glisse <marc.glisse@xxxxxxxx> wrote:
Hello,

I noticed a strange behavior of "wait" when I suspend and resume a script.

$ cat a.sh
#!/bin/dash
(sleep 7; echo blah) &
(sleep 7; echo bloh) &
wait ; echo coucou
$ ./a.sh
^Z
zsh: suspended  ./a.sh
$ fg
[1]  + continued  ./a.sh
coucou
$ blah
bloh

As you can see, the instruction after "wait" was executed immediatly on
resume, without waiting for the jobs.

If I replace the ';' after "wait" by "&&" and do the same suspend+resume,
"coucou" is never printed.

I am using dash version 0.5.7-3 in debian testing.

That's normal as wait was interrupted by a signal.  If you want
to wait even after an interruption, you should check the return
value of wait.

Hello, and thanks for you answer.

I find that quite surprising. I re-read the posix description of wait, and my understanding is that the return value of wait should depend on what happened to the waited process (exit code, signal), not to wait itself. And other shells seem to agree.

Are you suggesting that wait should always be used in a loop? With what check exactly?


--
Marc Glisse
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux