Portál AbcLinuxu, 24. dubna 2024 11:10


Dotaz: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?

10.4.2006 18:10 x
Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Přečteno: 231×
Odpovědět | Admin
Omlouvám se, že zase obtěžuji. Zbyl mi ještě problém, jak zabít smyčku na pozadí po doběhnutí celého scriptu. Kód:
function k_dcop()
{
echo konec
dc_1=0
dcop $dcopRef close
kill $$
}

dcopRef=`kdialog --progressbar "Press Cancel at Any time" 4`
dcop $dcopRef showCancelButton true

dc_1=1
{
 until [ $dc_1 -eq 0 ]; do
 sleep 1
[ `dcop $dcopRef wasCancelled` == true ] &&  k_dcop
done
} &


dcop $dcopRef setProgress 1
dcop $dcopRef setLabel "Thinking really hard"
sleep 5
dcop $dcopRef setProgress 2
sleep 5
dcop $dcopRef setLabel "Thinking some more"
dcop $dcopRef setProgress 3
sleep 5
dcop $dcopRef setProgress 4
sleep 5

dcop $dcopRef close

echo HOTOVO
Když stisknu vypínací tlačítko na progressbaru, je to v pohodě:
mircy@linux:/data/video-avi> sh e.sh
konec
Ukončen (SIGTERM)
mircy@linux:/data/video-avi>
Ale když nechám vše doběhnout, tak se donekonečna opakuje:
call failed
e.sh: line 17: [: ==: unary operator expected
call failed
e.sh: line 17: [: ==: unary operator expected
call failed
e.sh: line 17: [: ==: unary operator expected
call failed
e.sh: line 17: [: ==: unary operator expected
call failed
e.sh: line 17: [: ==: unary operator expected
call failed
e.sh: line 17: [: ==: unary operator expected
Tedy ta smyčka na pozadí furt běží. A mně se nedaří ji po doběhnutí celé funkce vypnout. Jak na to? Kill $$ nezabírá.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

stativ avatar 10.4.2006 18:21 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Odpovědět | | Sbalit | Link | Blokovat | Admin
tipuji killall
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
10.4.2006 18:54 x
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
A s jakou volbou?
stativ avatar 10.4.2006 19:16 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
killall jmeno_procesu ve vasem pripade asi killall -s KILL e.sh
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
10.4.2006 19:09 yaplik | skóre: 6
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Odpovědět | | Sbalit | Link | Blokovat | Admin
zkuste zmenit
[ `dcop $dcopRef wasCancelled` == true ] && k_dcop
na
[ x`dcop $dcopRef wasCancelled` != xfalse ] && k_dcop

dcop po zabiti daneho progressbaru nejspis nic nevypise takze se dana podminka expanduje na [ == true ] coz je spatne
David Watzke avatar 10.4.2006 19:29 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Spíš
[ `dcop $dcopRef wasCancelled` == true ] && k_dcop 
na
[ "$(dcop $dcopRef wasCancelled)" == true ] && k_dcop 
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
10.4.2006 19:35 yaplik | skóre: 6
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
otazka vkusu :) , ale
e.sh: line 17: [: ==: unary operator expected se stejne nevyhnete
David Watzke avatar 11.4.2006 05:20 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Ne? AFAIK ano.
david@amd64 ~ $ [ "" == true ]
david@amd64 ~ $ echo $?
1
;-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
10.4.2006 19:32 yaplik | skóre: 6
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
kecam,

MYPPID=$$
(while kill -0 $MYPPID; do sleep 1; if [...]; done) &
Luboš Doležel (Doli) avatar 10.4.2006 19:40 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Odpovědět | | Sbalit | Link | Blokovat | Admin
kill %1?
10.4.2006 21:19 x
Rozbalit Rozbalit vše Re: Jak dodatečně zabít nekonečnou smyčku běžící na pozadí?
Váš způsob je nejlepší (ten yaplikův také funguje). Všem děkuji za svatou trpělivost. Až prográmek dokončím, určitě dám odkaz do fóra "Tvorba zvuku a videa" .

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.