This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
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/