Re: perl programs hang if run with daemontools
Peter Samuel <[email protected]>
| Newsgroups | gmane.comp.djb.syslog |
|---|---|
| Message-ID | <[email protected]> |
Quoting Oscar Retana <[email protected]>: > > Hello list. I've using daemontools since two years ago, it's great, I > can't think of a daemon anymore without thinking in daemontools. Thanks > a lot DJB. > > My problem is when running perl programs under daemontools. If my perl > script is something like this, it works fine wit daemonstools and > multilog logs everything right: > > #!/usr/bin/perl -w -T > while (1) { > print "test\n"; > } > > But any real script hangs. For example, if I add a single "sleep", I > stop receiving any log. This hangs: (or at least, it never produce any > output; the "sleep" is just a little example that fails) > > #!/usr/bin/perl -w -T > while (1) { > print "test\n"; > sleep 1; > } You are running up against STDIO buffering. In the first code example above the program will quickly fill up the STDIO buffer (typically 4k) and the output will be sent to file descriptor 1. In the second example it will take 820 seconds to fill up the 4k buffer. So you won't see anything for that period of time. You can tell Perl to flush on very write by setting $| to a non-zero value. See man perlvar > > I am runnign spamassassin with daemonstools, and it turns out that the > spamd daemon is a perl script itself. I have no problems running > spamassassin. At the beggining of the spamd script they have some > special things, I tried using them, but nothing. > > I don't know if there's something special I should consider for Perl, if > I want to use daemontools with it. And I have googled for serveral days, > but nothing yet. > > I apologize for posting this here, if it turns that this is not related > at all to daemontools (or multilog), and it is a Perl issue instead. > But maybe you have seen this behavior before, and can give me a bit of help. > > Thanks a lot! > > > -- > Oscar Retana > > -- Regards Peter ---------- Peter Samuel [email protected] +1 613 729 7964