summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/main.cpp44
1 files changed, 13 insertions, 31 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
@@ -217,76 +217,58 @@ int initApplication( int argc, char ** argv )
#endif
return rv;
}
static const char *pidfile_path = "/var/run/opie.pid";
void create_pidfile ( )
{
FILE *f;
if (( f = ::fopen ( pidfile_path, "w" ))) {
::fprintf ( f, "%d", getpid ( ));
::fclose ( f );
}
}
void remove_pidfile ( )
{
::unlink ( pidfile_path );
}
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( SIGSEGV, handle_sigterm );
+ ::signal( SIGBUS, handle_sigterm );
+ ::signal( SIGILL, handle_sigterm );
::signal ( SIGTERM, handle_sigterm );
::signal ( SIGINT, handle_sigterm );
-
::setsid ( );
::setpgid ( 0, 0 );
::atexit ( remove_pidfile );
create_pidfile ( );
int retVal = initApplication( argc, 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 )
+ if ( ServerApplication::doRestart )
{
- int retVal = initApplication( argc, argv );
-
- if ( DesktopApplication::doRestart ) {
- odebug << "Trying to restart" << oendl;
- execl( (QPEApplication::qpeDir()+"bin\\qpe").latin1(), "qpe", 0 );
+ for ( int fd = 3; fd < 100; fd++ ) close( fd );
+ execl( (QPEApplication::qpeDir()+"bin/qpe").latin1(), "qpe", 0 );
}
return retVal;
}
-
-#endif
-