Date: Tue, 06 Apr 1999 08:56:17 +0100 From: Brian Somers <brian@Awfulhak.org> To: Peter Wemm <peter@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.sbin/cron/cron popen.c Message-ID: <199904060756.IAA74128@keep.lan.Awfulhak.org> In-Reply-To: Your message of "Mon, 05 Apr 1999 21:31:24 PDT." <199904060431.VAA10795@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> peter 1999/04/05 21:31:24 PDT > > Modified files: > usr.sbin/cron/cron popen.c > Log: > This is a hack. Cron runs with stdin/out/err pointing to /dev/console, > which init thoughtfully revoke()'s when starting a getty on ttyv0. This > Cron's popen() was passing these fd's through to cron children (ie: > sendmail, *not* normal cron jobs). The side effects were usually > not noticed, but it tripped up postfix which did a sanity check to see > that stdin/out/err were open, and got EBADF even thought the fd's were > in use. I seem to recall sendmail itself has hacks to work around > this problem, it had a checkfd012() function, possibly for this same > problem. (Postfix has a workaround too now though..) > > This is a hack, not a fix. It's probably best to check and perhaps > close/reopen() /dev/console if needed each time around the event loop. > It would probably be useful to actually see any error messages from cron. This isn't really correct either though. The descriptors could be revoked after cron execs. I would have thought there should be some way of revoking a terminals session and process group ids, resulting in the disassociation of all controlling processes, but *not* the revoke()ing of any descriptors. It could be used in place of revoke() for /dev/console (maybe settable in /etc/ttys). This would allow things like ``tail -f /dev/console'' to survive a console logout too. It sounds a bit hackish tough :-( -- Brian <brian@Awfulhak.org> <brian@FreeBSD.org> <brian@OpenBSD.org> <http://www.Awfulhak.org> Don't _EVER_ lose your sense of humour ! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199904060756.IAA74128>