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:[EMAIL PROTECTED] 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/