author | mickeyl <mickeyl> | 2004-11-12 13:51:35 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-11-12 13:51:35 (UTC) |
commit | de558d6f0bc31f58ffaa894a0236f0d9cb5d73e0 (patch) (side-by-side diff) | |
tree | 55f7c2ec8c1e93983d41c962e557f3651db39b03 | |
parent | ee67d61c20b6840f3fb353e314d16a90c0438e7c (diff) | |
download | opie-de558d6f0bc31f58ffaa894a0236f0d9cb5d73e0.zip opie-de558d6f0bc31f58ffaa894a0236f0d9cb5d73e0.tar.gz opie-de558d6f0bc31f58ffaa894a0236f0d9cb5d73e0.tar.bz2 |
handle more signals and don't kill the process @ end
-rw-r--r-- | core/launcher/main.cpp | 92 |
1 files changed, 37 insertions, 55 deletions
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp index b119399..aa0dfdf 100644 --- a/core/launcher/main.cpp +++ b/core/launcher/main.cpp @@ -68,3 +68,3 @@ static void cleanup() for ( it = stale.begin(); it != stale.end(); ++it ) { - dir.remove( *it ); + dir.remove( *it ); } @@ -89,3 +89,3 @@ void initEnvironment() if (tz.isNull() || tz.isEmpty()) - tz = "America/New_York"; + tz = "America/New_York"; @@ -97,3 +97,3 @@ void initEnvironment() if( lang.isNull() || lang.isEmpty()) - lang = "en_US"; + lang = "en_US"; @@ -127,3 +127,3 @@ static void initKeyboard() if ( ard > 0 && arp > 0 ) - qwsSetKeyboardAutoRepeat( ard, arp ); + qwsSetKeyboardAutoRepeat( ard, arp ); @@ -143,5 +143,5 @@ static bool firstUse() { - Config config( "qpe" ); - config.setGroup( "Startup" ); - needFirstUse |= config.readBoolEntry( "FirstUse", TRUE ); + Config config( "qpe" ); + config.setGroup( "Startup" ); + needFirstUse |= config.readBoolEntry( "FirstUse", TRUE ); } @@ -149,3 +149,3 @@ static bool firstUse() if ( !needFirstUse ) - return FALSE; + return FALSE; @@ -177,4 +177,4 @@ int initApplication( int argc, char ** argv ) if ( firstUse() ) { - a.restart(); - return 0; + a.restart(); + return 0; } @@ -185,3 +185,3 @@ int initApplication( int argc, char ** argv ) QCopEnvelope e("QPE/System", "setBacklight(int)" ); - e << -3; // Forced on + e << -3; // Forced on } @@ -225,8 +225,8 @@ void create_pidfile ( ) { - FILE *f; + FILE *f; - if (( f = ::fopen ( pidfile_path, "w" ))) { - ::fprintf ( f, "%d", getpid ( )); - ::fclose ( f ); - } + if (( f = ::fopen ( pidfile_path, "w" ))) { + ::fprintf ( f, "%d", getpid ( )); + ::fclose ( f ); + } } @@ -235,3 +235,3 @@ void remove_pidfile ( ) { - ::unlink ( pidfile_path ); + ::unlink ( pidfile_path ); } @@ -240,20 +240,24 @@ void handle_sigterm ( int /* sig */ ) { - if ( qApp ) - qApp-> quit ( ); + ::signal( SIGCHLD, SIG_IGN ); + ::signal( SIGSEGV, SIG_IGN ); + ::signal( SIGBUS, SIG_IGN ); + ::signal( SIGILL, SIG_IGN ); + ::signal( SIGTERM, SIG_IGN ); + ::signal ( SIGINT, SIG_IGN ); + if ( qApp ) qApp->quit(); } -#ifndef Q_OS_WIN32 int main( int argc, char ** argv ) { - - ::signal ( SIGCHLD, SIG_IGN ); - - ::signal ( SIGTERM, handle_sigterm ); + ::signal( SIGCHLD, SIG_IGN ); + ::signal( SIGSEGV, handle_sigterm ); + ::signal( SIGBUS, handle_sigterm ); + ::signal( SIGILL, handle_sigterm ); + ::signal( SIGTERM, handle_sigterm ); ::signal ( SIGINT, handle_sigterm ); + ::setsid(); + ::setpgid( 0, 0 ); - ::setsid ( ); - ::setpgid ( 0, 0 ); - - ::atexit ( remove_pidfile ); - create_pidfile ( ); + ::atexit( remove_pidfile ); + create_pidfile(); @@ -262,25 +266,6 @@ int main( int argc, char ** argv ) // Have we been asked to restart? - if ( ServerApplication::doRestart ) { - for ( int fd = 3; fd < 100; fd++ ) - close( fd ); - - execl( (QPEApplication::qpeDir()+"bin/qpe").latin1(), "qpe", 0 ); - } - - // Kill them. Kill them all. - ::kill ( 0, SIGTERM ); - ::sleep ( 1 ); - ::kill ( 0, SIGKILL ); - - return retVal; -} -#else - -int main( int argc, char ** argv ) -{ - int retVal = initApplication( argc, argv ); - - if ( DesktopApplication::doRestart ) { - odebug << "Trying to restart" << oendl; - execl( (QPEApplication::qpeDir()+"bin\\qpe").latin1(), "qpe", 0 ); + if ( ServerApplication::doRestart ) + { + for ( int fd = 3; fd < 100; fd++ ) close( fd ); + execl( (QPEApplication::qpeDir()+"bin/qpe").latin1(), "qpe", 0 ); } @@ -289,4 +274 @@ int main( int argc, char ** argv ) } - -#endif - |