LINUX.ORG.RU

ncurses без управляющего терминала?


0

0
Я хочу чтобы моя программа запускалась из /usr/local/etc/rc.d т.е. до loginа и использовала ncurses т.е. чтобы могла вывести на экран и опрашивать клавиатуру. Та что есть до логина запускаться не хочет естественно, говорит недоступен терминал. Подскажите кто знает.
anonymous
AFAIK, для ncurses требуется, чтобы была установлена переменная окружения TERM. Попробуй в начале работы своей проги сделать так:
int main()
{
putenv("TERM=linux");
/* дальше твой рабочий код */
}
nobody ★★
()
Спасибо за совет. Она теперь выводит на экран но на клавиатуру не реагирует и что самое обидное теперь нельзя залогиниться с консоли когда она работает.
anonymous
()
Ну тогда давай по порядку. Расскажи, что ты хочешь сделать. В смысле, для чего ты эту прогу пишешь? Может быть, найдется другой способ сделать то, что тебе нужно.
nobody ★★
()
То что другой способ существует не вызывает у меня сомнений, но программа уже работает и вносить в нее большие изменения нежелательно. У нее есть некоторое неудобство она не запускается автоматически, т.е. приходится логинится и запускать ее самому. А хотелось бы чтобы она запускалась при запуске системы. Но при этом программа интерактивная т.е. вывадит на экран важные сведения и имеет меню для выбора настроек. А служит она для отправки файлов и тут время на то чтобы залогиниться является критическим. К тому же с ней будут работать люди которые вообще не знают что такое UNIX от которых в случае возникновения внештатной ситуации требуется лишь нажать на ресет.
anonymous
()
Насколько я понял, юзер, после входа в систему, должен попасть на твою прогу? А можно запихнуть ее вызов в стартовый скрипт оболочки?
nobody ★★
()
Насчет юзера это конечно правильно, однако есть желание обойтись совсем без юзера, по крайней мере, на этапе загрузки.
anonymous
()
Может быть, тогда написать мини-программку, которая сделает все, что должен делать "login", только без запроса пароля у юзера? Т.е., она установит все переменные окружения, все сделает, а потом
"exec <твоя_прога_на_ncurses>"
nobody ★★
()
Для того, чтобы программа запускалась автоматом, нужно запускать систему с runlevelom 2, 3 или 4. Причем программу эту необходимо вызывать в файле /etc/rc.d/rc.sysinit (это шелл-скрипт), и вызвать ее нужно раньше вызова /sbin/getkey (в самом конце rc.sysinit), т.к. getkey будет ждать нажатия клавиши. Если тебе не нужно, чтобы юзер вышел в Шелл (случайно или специально), лучше еще перегрузить Ctrl-C, а по завершении программы сделать вместо exit(0) - system("init 6"); А как ты вообще грузишься, с винта или с дискеты?
Akan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.