IO и другая оболочка управляют, когда программа не запущена терминалом

Вы могли объединить все эти команды в одну .sh файл, как это:

#!/bin/bash
kill `ps aux | grep -F 'ServerAPP' | grep -v -F 'grep' | awk '{ print $2 }'` 
/full/path/to/server_automated_net_setup.sh
export LD_LIBRARY_PATH=./:~/server/install-dir/lib_boost:~/server/install-dir/lib_openSSL
nohup /full/path/to/ServerAPP >& /dev/null &

Вставьте все это в файл yourname.sh и сделайте исполняемый файл:

chmod +x yourname.sh

Также это возможно к контролю прямо из сценария svn co url://, и Вы сможете автоматизировать целый процесс.

5
01.03.2013, 13:45
1 ответ

Когда программа запускается (одним из exec(3) семейство системных вызовов), это наследовало среду (т.е. переменные оболочки exportредактор) и открытые файлы от родителя. Что сделано, когда запуск программы является a fork(2), ребенок настраивает среду и файлы, затем exec(3)s новая программа. Когда оболочка делает это, STDIN, STDOUT и STDERR подключены к терминалу. То, что делает любое графическое средство запуска, до него, но, должен подключить их с /dev/null (куда ввод с клавиатуры должен прибыть из, и куда произведенный должен перейти в?).

Если программа, запущенная как этот в свою очередь, звонит exec(3), это как объяснено выше. system(3) немного более сложно, поскольку это порождает оболочку, чтобы сделать командную строку, анализирующую и так далее и ту оболочку затем exec(3)s команда. Но механика является тем же: Файлы наследованы, как среда.

2
27.01.2020, 20:42

Теги

Похожие вопросы