2016-01-13 1 views
3

У меня есть файл jar, который представляет собой программу, которая принимает вход пользователя и обрабатывает его. Я бег этой баночка файл, используя приведенный ниже скрипт:Ограничить команды kill при запуске файла jar с использованием сценария оболочки

PR=`basename $0`  
cdt=`date +'%H:%M:%S %d/%m/%Y'` 
cd $HOME/myprogram 
java -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram [email protected] 
cdt=`date +'%H:%M:%S %d/%m/%Y'` 

Проблемы я столкнулся с этим, я хочу, чтобы запретить пользователь выхода из приложения, используя любой из комбинаций приведенных ниже команд. Например:

Ctrl + z 
Ctrl + c 
Ctrl + break 

Пожалуйста, помогите мне.

+1

duplicate: http://stackoverflow.com/questions/1216172/how-can-i-intercept-ctrlc-in-a-cli-application –

+0

Почему вы не хотите писать сценарий начала и остановки? Вопрос в том, где вы знаете, какой процесс должен убить при запуске вашей программы на фоне. –

+0

@ Кай Искрач: Это изменение должно быть выполнено в скрипте, а не в программе. Ответ, который вы отметили как дублируемую копию, использует функцию Java для добавления крючков, которая абсолютно не имеет значения, и в моем случае она даже не будет работать. Просьба проверить вопрос и ответ, прежде чем отмечать его как дубликат. –

ответ

1

Я бы предложил следующие изменения в скрипте, чтобы получить требуемое требование. Кажется, что вам нужна какая-то функция, которая поймает эти команды и не позволит командам запускаться. Сценарий оболочки может иметь такую ​​функциональность, реализуя использование ловушки.

Вы можете внести изменения в сценарии, как это:

PR=`basename $0`  
cdt=`date +'%H:%M:%S %d/%m/%Y'` 
cd $HOME/myprogram 

#Add these two lines in the code for catching exit commands 
trap '' 20 
trap ' ' INT 

java -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram [email protected] 
cdt=`date +'%H:%M:%S %d/%m/%Y'` 

Его очень просто использовать ловушки в сценариях оболочки. Надеюсь, что это работает для вас.

+0

Я проверю это и дам вам знать. –

+1

Это сработало для меня. Пришлось использовать ловушку в скрипте. –

3

Я рекомендую вам использовать простой скрипт запуска и остановки для вашей программы;

1) создать сценарий sh с именем start_myprogram.sh и поместить в файл;

PR=`basename $0`  
cdt=`date +'%H:%M:%S %d/%m/%Y'` 
cd $HOME/myprogram 
nohup java -DMY_PROG -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram [email protected] 
cdt=`date +'%H:%M:%S %d/%m/%Y'` 

2) создать сценарий sh с именем stop_myprogram.sh и поместить в файл;

3) запустить программу ./start_myprogram.sh &

4) в любое время, когда вы хотите остановить программу ./stop_myprogram.sh

* Это может быть, не ответить на ваш вопрос, но по крайней мере, вам не нужно ничего реализовывать.

+0

Спасибо за ответ. Я попробую и дам вам знать. –