сряда, 14 януари 2009 г.

Изпълнение на програма във фонов режим - UNIX

Изпълнение на команда във фонов или асинхронен режим (background) означава, че след като shell стартира изпълнението на командата не чака нейното завършване, а продължава работата си, т.е. извежда покана, ако е интерактивен, и чете следваща команда. Това означава, че в такъв режим могат да се изпълняват само външни команди. По премълчаване режимът на изпълнение е привилегирован или синхронен (foreground), т.е. процесът shell се синхронизира със завършването на командата. За да бъде изпълнена една команда във фонов режим се използва друг специален символ “&”:
команда &
Ако командата използва стандартен вход, то трябва той да бъде пренасочен. Същото се препоръчва и за стандартния изход и изход за грешки, тъй като в противен случай резултатът е непредсказуем. Например, ако командата се опита да чете от терминала, то ще й бъде изпратен сигнал, който ще предизвика спирането й (състояние stopped). Изпълнението на спряна командата може да се възстанови само в привилегирован режим (чрез командата fg).
Пример. Командата find, изпълнена във фонов режим с пренасочване на изходите.
find /home -name core –print > corelist 2> /dev/null &

Няма коментари:

Публикуване на коментар