Na Linuxu bych se proti přetížení procesoru bránil tak, že bych spustil skript jako samostatný proces (např. modul multiprocessing nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval (myslím, že se to může stát, když počítá např. 100000**10000000), tak signál KILL. Protože by uživatel nemohl změnit chování při přijetí signálů (protože by nemohl importovat potřebný modul), mělo by to fungovat celkem spolehlivě. Maximální velikost použité paměti lze omezit přes modul resource.
2010/5/5 Jan Janech <de...@atlas.sk>: > Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak > to clovek vie spravit. > > staci nieco taketo: > >>>> eval(superNebezpecnyKod, {'__builtins__': {}}, {}) > > alebo > >>>> exec superNebezpecnyKod in {'__builtins__': {}}, {} > > zavisi ale od toho, akym situaciam sa chcete vyhnut. > > coho sa nezbavite (ani evalom) je napr nekonecna rekurzia: > >>>> superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' > > to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie. > > co tak ale nekonecny cyklus? > >>>> superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' > > alebo supernarocne operacie? > >>>> superNebezpecnyKod='2**10000000000000000' > > vela stastia pri vyuzivani evalu a execu :D > > Jan Janech > > > On 05/05/10 14:26, Hynek Fabian wrote: >> >> Jan Janech (středa 05 Květen 2010 13:08:49): >>> >>> Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre >>> narusenie bezpecnosti sa da spravit aj v eval. >> >> Jak? >> >> eval(x, {}, {}) >> >> Jakým X se dá z takové konstrukce utéci? >> _______________________________________________ >> Python mailing list >> Python@py.cz >> http://www.py.cz/mailman/listinfo/python >> >> >> > > > -- > > ____________________________ > Ing. Jan Janech > Katedra softverovych technologii > Fakulta riadenia a informatiky > Zilinska Univerzita > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python