Portál AbcLinuxu, 25. dubna 2024 23:28


Dotaz: Jak omezit delku provadeni programu?

27.9.2007 23:31 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Jak omezit delku provadeni programu?
Přečteno: 327×
Odpovědět | Admin
Dobry den, mam php skript, odsud spoustim par perl scriptu a jeden z nich spousti CAS program maxima a dela pak neco s jeho vystupem. Problem je, ze nekdy se maxima pta treba jestli je nektera promenna kladna nebo zaporna a ceka na odpoved - te se pochopitelne nedocka. V dusledku toho to tam potom porad visi zatezuje procesor. Myslel jsem ze se to killne automaticky po pulminute (maximalni doba provadeni php skriptu),ale neni tomu tak. Da se tohle nejak osetrit? Aby ta maxima nejela treba dele nez deset vterin. Prepinac pro maximu, aby se nic neptala, jsem nenasel. :(

Dekuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.9.2007 23:48 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nestačilo by něco jako yes | maxima? (Disclaimer: neznám maximu, jen yes:)
27.9.2007 23:56 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
yes "positive;" | maxima --batch-string=integrate(sin(x),x,0,a)
Díky moc, pomohlo to. Ale nebylo by ještě nějaké řešení? Já totiž dopředu nevím, na co všechno by se ta maxima mohla ptát. Zatim jsem viděl positive, negative or zero.
28.9.2007 01:52 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
V práci používáme třeba tohle: http://www.shelldorado.com/scripts/cmds/timeout. Je to takový bash wrapper, kterému se jako parametr předhodí kýžený program, a on už si to pohlídá. Funguje dobře..
28.9.2007 08:28 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
Vyzkouším to během dneska, nebo večer, děkuji.
28.9.2007 08:38 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
Tak vypadá to dobře, děkuji. Následující příkaz se killne za pět vteřin.
./timeout maxima --batch-string="integrate(sin(x),x,0,a);"
28.9.2007 08:29 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
Jen tak pro případné pozdější nálezce tohoto vlákna: v tom příkladu jsem zapomněl dát ten řetězec s integrálem do uvozovek a hlavně dát za příkaz integrate středník.
28.9.2007 00:03 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nestačilo by zavřít standardní vstup?
28.9.2007 08:32 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
ehm ..... ????? Nevím jak se to dělá, ale aspoň mám zase inspiraci co si nastudovat :) . Děkuji. Dám sem potom vědět, co pomohlo.
28.9.2007 10:04 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak omezit delku provadeni programu?
V shellu se obvykle používá takový podvod, kdy se na stdin připojí /dev/null (program </dev/null). Čtení z tohoto zařízení má tu vlastnost, že vždy skončí s chybou „konec souboru“.

Případné opravdové uzavření descriptoru se v jazyce C provede voláním close(0);, které je následované execem.

Otázka je, co na to maxima? Pokud trvá na tom, aby stdin byl terminal (isatty(3)), pak je to nemilé.

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.