This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Slight patch for Cron


On Thu, Jun 05, 2003 at 01:01:19PM +0200, Ronald Landheer-Cieslak wrote:
> On Wed, 4 Jun 2003, Corinna Vinschen wrote:
> > On Wed, Jun 04, 2003 at 09:53:05AM +0200, Ronald Landheer-Cieslak wrote:
> > > On Tue, 3 Jun 2003, Corinna Vinschen wrote:
> > > > Does it help to set CYGWIN=notty before starting cron?
> > > Apparently not, no.
> > > 
> > > Because I'm starting cron from the "startup" part of the start menu, I had 
> > > to run it from a batch file (
> > > set CYGWIN=notty
> > > cron.exe
> > > ) but I don't think that should make a difference.
> > Could you just for fun add a call to RegisterServiceProcess() (that
> > works on 9x/Me only) right before the setsid() call in the child code
> > and try again?
> I'd love to, but I have a Windows NT/4 box and thus don't have 
> RegisterServiceProcess() (Windows NT Ver 4.0 Build 1381 Service Pack 6, as 
> per cygcheck output attached to a previous message).

As it seems to turn out, it's a problem in cron, not in Cygwin.  What
you see is not the parent not being able to exit, it's the child which
has open console descriptors and so keeping the console open.  If you
then try to close the console forcefully, you kill the child.

Please apply the following patch to cron and report back whether cron
does for you what it's supposed to do (parent leaves, window can be
closed, cron still processes files), or not.

Your positive feedback will trigger a new cron version asap :-)

Thanks,
Corinna

Index: cron.c
===================================================================
RCS file: /home/cvs/cvsroot/src/cron/cron.c,v
retrieving revision 1.5
diff -p -u -r1.5 cron.c
--- cron.c	11 Apr 2003 19:42:37 -0000	1.5
+++ cron.c	6 Jun 2003 07:13:17 -0000
@@ -26,6 +26,7 @@ static const char rcsid[] = "$Id: cron.c
 #include "cron.h"
 #ifdef __CYGWIN__
 #include <signal.h>
+#include <sys/fcntl.h>
 #else
 #include <sys/signal.h>
 #endif
@@ -115,6 +116,21 @@ main(argc, argv)
 	}
 
 	acquire_daemonlock(0);
+
+#ifdef __CYGWIN__
+	{
+	  int fd;
+	  if ((fd = open("/dev/null", O_RDWR, 0)) != -1)
+	    {
+	      (void)dup2(fd, STDIN_FILENO);
+	      (void)dup2(fd, STDOUT_FILENO);
+	      (void)dup2(fd, STDERR_FILENO);
+	      if (fd > 2)
+		(void)close (fd);
+	    }
+	}
+#endif
+
 	database.head = NULL;
 	database.tail = NULL;
 	database.mtime = (time_t) 0;

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]