Я дмаю что многие видели что после вылогивания, логонер стартует заново.
Как я поинмаю это реализовано путём использования вечнго цикла.
Как пример решения можно рассмотреть kdm, когда выходишь,
логонер опять стратует, даже Ctrl+Alt+Backspace его убить не в состтояние.
При этом он состоит из одного файла и работает.
Используя подсказку полученную на этом форуме, сама она работает,
т.е. один файл запскает и Х-ы и прогу а вот цикл
сделать не полчилось.
int main ( int argc, char **argv )
{
int ret;
if ( !getenv ( "DISPLAY" ) )
{
pid_t pid = fork ( );
if ( pid != 0 ) //1
{
pid_t pid = fork ( );
if ( pid != 0 )//2
{
while ( 1 )
{
pid_t pid = fork ( );
if ( pid != 0 )//3
{
set_root ( );
go_to_cur_dir ( );
execlp ( XINIT, XINIT, LDM, 0 );
perror ( XINIT );
}
}
}
}
}
else
{
QApplication app ( argc, argv );
ldm *login = new ldm;
app.setMainWidget ( login );
login->show ( );
ret = app.exec ( );
}
return ret;
}
Прошу прощения за назойливость, но может кто подскажет что не так и
как реализовать повторный самозапуск на вылогивание
( велик и могуч русский язык ).
Заранее спасибо!!!
Повесь свою прогу на /sbin/init, и будет он ее тебе запускать автоматом после ее смерти (только форкаться не надо, потому как init процессы отслеживает, а не программы, выполняемые в их контексте).
я почти так и сделал но почему то не стартует КДЕ, т.е. появвляется дефолтный фон и тишина, если рубануть Х-ы тремя кнопками то он как и положена стратует но одновременно начинает запускаться КДЕ и мой логонер становиться частью приложений юзера. КДЕ запускаю execlp (..).