[LTP] [PATCH v2] pec: Fix multiple event test
Joerg Vehlow
lkml@jv-coder.de
Mon Apr 19 09:34:34 CEST 2021
Hi,
On 4/16/2021 7:38 PM, Petr Vorel wrote:
> Hi Joerg,
>
> ...
>> +# Find a free file handle
>> +free_fd()
>> +{
>> + local fd
>> +
>> + for fd in $(seq 200); do
>> + # Sapwn a new sh, because redirecting to a non existing file handle
>> + # will trigger a syntax error.
>> + /bin/sh -c ": 2>/dev/null >&$fd || : 2>/dev/null <&$fd" 2>/dev/null
> Probably better to use sh -c "..."
I used /bin/sh, because that is the same interpreter specified in the
shebang. Just using sh could theoretically fail or spawn a different shell.
Maybe $SHELL would be better, but I don't know how widely this is
supported...
>
>> + if [ $? -eq 2 ]; then
>> + echo $fd
>> + return
>> + fi
>> + done
> maybe I do something wrong, but this version fails for me
> (and I'm still testing it only on bash):
>
> cn_pec 1 TINFO: timeout per run is 0h 5m 0s
> cn_pec 1 TINFO: Test process events connector
> cn_pec 1 TINFO: Testing fork event (nevents=10)
> cn_pec 1 TBROK: No free filehandle found
>
> I guess there is something wrong free_fd().
Damn shells... I just realized /bin/sh on my system was dash's sh
emulation and it does not emulate sh the same way bash does...
The return value in bash is 1, not two... Can you please check the patch
with [ $? -ne 0 ]? That should work for all shells.
Jörg
More information about the ltp
mailing list