wineclipsrv runs as a daemon ; fixes bug #323
jasonp
jasonp1 at cox.net
Tue Mar 5 02:54:37 CST 2002
Here's my first patch submission, so anything that is odd or should be fixed
please let me know. That goes for either how I've submitted it or any coding
issues.
Log Message:
wineclipsrv runs as a daemon (closes stdout/stderr, no
controlling terminal, session group leader). Prevents wine from hanging on
open stdout/stderr (bug #323)
-------------- next part --------------
Index: wineclipsrv.c
===================================================================
RCS file: /home/wine/wine/windows/x11drv/wineclipsrv.c,v
retrieving revision 1.7
diff -u -r1.7 wineclipsrv.c
--- wineclipsrv.c 2001/10/14 16:18:54 1.7
+++ wineclipsrv.c 2002/03/05 06:17:49
@@ -174,6 +174,7 @@
* Prototypes
*/
+int RunAsDaemon( void );
BOOL Init(int argc, char **argv);
void TerminateServer( int ret );
int AcquireSelection();
@@ -195,6 +196,12 @@
{
XEvent event;
+ if ( RunAsDaemon() == -1 )
+ {
+ ERR("could not run as daemon\n");
+ exit(1);
+ }
+
if ( !Init(argc, argv) )
exit(0);
@@ -218,6 +225,39 @@
/**************************************************************************
+ * RunAsDaemon()
+ */
+int RunAsDaemon( void )
+{
+ pid_t pid;
+ int i;
+
+ /* fork child process and let parent exit ; gets rid of original PID */
+ pid = fork();
+ switch ( pid )
+ {
+ case -1:
+ ERR("fork failed\n");
+ return(-1);
+ break;
+ case 0:
+ exit(0);
+ break;
+ }
+
+ /* below is child process w/ new PID, set as session leader */
+ setsid();
+
+ /* close stdin,stdout,stderr and file descriptors (overkill method) */
+ for ( i = 0; i < 256 ; i++ )
+ close(i);
+
+ TRACE("now running as daemon...\n");
+ return 0;
+}
+
+
+/**************************************************************************
* Init()
* Initialize the clipboard server
*/
@@ -337,6 +377,7 @@
return TRUE;
}
+
/**************************************************************************
More information about the wine-patches
mailing list