Linux Mint основан на Ubuntu и может использовать пакеты из репозиториев Ubuntu (ncluding много новейших PPAs). Один из пакетов будет здесь работать на Вас?
В целом, чтобы иметь доступ и к репозиториям Монетного двора и к Ubuntu, Ваш исходный список должен выглядеть примерно так:
deb http://packages.linuxmint.com/ katya main upstream import
deb http://archive.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ natty partner
deb http://packages.medibuntu.org/ natty free non-free
ОБНОВЛЕНИЕ:
Java солнца jre должен быть в репозитории партнера по человечности. У Вас есть эта строка в Вашем sources.list?
deb http://archive.canonical.com/ubuntu/ natty partner
Посмотрите здесь для практического руководства при установке jre на человечности (изменитесь ясный на аккуратный для Linux Mint 11).
Я не знаю, находится ли очень последняя версия в repos. Вы уверены, что Вам нужен он? Можно ли дать пример вида содержания, которое Вы не можете загрузить?
Как альтернатива можно попытаться использовать alien
устанавливать от об/мин. Посмотрите здесь для практического руководства.
После многих, много часов поиска грани Интернета, я нашел ответ.
Драйвер Tty имеет представление о группе процесса переднего плана.
При нажатии CTRL + C, TTY отправляет SIGINT на каждый процесс в группе процесса переднего плана. (См. Также Эта запись в блоге .)
Вот почему как скомпилированные двоичные , так и скрипт, который запускает его оба, оба набираются. На самом деле я хочу только основное приложение получить этот сигнал не Скрипты запуска.
Теперь решение теперь очевидно: нам нужно поставить приложение в новую группу процессов и сделать его в группе процесса переднего плана для этого TTY. Видимо, команда для этого - это
setsid -c <applcation>
, и это все. Теперь, когда пользователь нажимает Ctrl + C, SIGINT будет отправлен на приложение (и любые дети, которые он может иметь), и никто другой. Что я хотел.
Setsid
сам по себе ставит приложение в новую группу процессов (действительно, целую новую «сеанс», которая, по-видимому, является группой групп процессов).
Добавление флага -C
, делает эту новую группу процессов, станут группой «переднего плана» для текущего TTY. (I.e., он получает SIGINT при нажатии Ctrl + C.)
Я видел много конфликтующую информацию о том, когда Bash делает или не работает в новой группе процессов. (В частности, кажется, что это отличается для «интерактивных» и «неинтерактивных» снарядов.) Я видел предложения, которые вы можете, может быть, приложите это работать с Clever Create Trow Clining ... я не Не знаю. Но подход выше, кажется, работает для меня.
В вашем инициированном скрипте Bash.
Следите за PID второй программы
Поймать SIGINT
, когда вы поймали Сигинт, отправьте Сигинт на вторую программу PID
Как я уже упоминал в комментарии к F01, вы должны отправлять SIGTERM в детский процесс. Вот пара сценариев, которые показывают, как ловить ^ C и отправлять сигнал в детский процесс.
Во-первых, родитель.
Traptest
#!/bin/bash
# trap test
# Written by PM 2Ring 2014.10.23
myname=$(basename "$0")
child=sleeploop
set_trap()
{
sig=$1
msg="echo -e \"\n$myname received ^C, sending $sig to $child, $pid\""
trap "$msg; kill -s $sig $pid" SIGINT
}
trap "echo \"bye from $myname\"" EXIT
echo "running $child..."
./$child 5 &
pid=$!
# set_trap SIGINT
set_trap SIGTERM
echo "$child pid = $pid"
wait $pid
echo "$myname finished waiting"
И теперь ребенок.
Sleeploop
#!/bin/bash
# child script for traptest
# Written by PM 2Ring 2014.10.23
myname=$(basename "$0")
delay="$1"
set_trap()
{
sig=$1
trap "echo -e '\n$myname received $sig signal';exit 0" $sig
}
trap "echo \"bye from $myname\"" EXIT
set_trap SIGTERM
set_trap SIGINT
#Select sleep mode
if false
then
echo "Using foreground sleep"
Sleep()
{
sleep $delay
}
else
echo "Using background sleep"
Sleep()
{
sleep "$delay" &
wait $!
}
fi
#Time to snooze :)
for ((i=0; i<5; i++));
do
echo "$i: sleeping for $delay"
Sleep
done
echo "$myname terminated normally"
Если Traptest отправляет SIGTERM, ведут себя хорошо, но если Traptest посылает Сигинт, то SELEPLOP никогда не видит его.
Если в системе SELEPLOP ловушки SIGTERM, и режим сна - это передний план, то он не может ответить на сигнал, пока он не просыпается от тока. Но если режим сна - это фон, он ответит немедленно.