Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: Sharing a filehandle with an asynchronous event

by stevieb (Canon)
on Jan 23, 2018 at 23:12 UTC ( [id://1207788]=note: print w/replies, xml ) Need Help??


in reply to Re: Sharing a filehandle with an asynchronous event
in thread Sharing a filehandle with an asynchronous event

This is actually great! To be honest, I've never used Log::Log4perl before, so this got me to doing some testing and reading of the very informative docs. It does what is needed here so I do believe I am going to swap out for this logging distribution in this case. There's even config file directives to eliminate race-type conditions (ie. overlap).

That said, I'm still wondering if there's a real, feasible way to "share" a file handle across procs (forks, really). I don't believe there is, but I'm still open to hear input. Even at a C level, it doesn't appear very trivial to get things to run smoothly all of the time where eliminating overlap can be made consistent.

Update

"I put together a simple example using the default code from the documentation from Async::Event::Interval and your info that you want to log."

That's awesome that you actually tested out the SYNOPSIS of the distribution :)

  • Comment on Re^2: Sharing a filehandle with an asynchronous event

Replies are listed 'Best First'.
Re^3: Sharing a filehandle with an asynchronous event
by andal (Hermit) on Jan 24, 2018 at 10:48 UTC
    I'm still wondering if there's a real, feasible way to "share" a file handle across procs (forks, really)

    It depends on the system you are running on. Under Linux one can share file descriptor even between processes (forks). One can open file in append mode, use buffering based on EOL character and then the system will make sure that messages from different processes are written line-by-line. That will put lines from one process between lines from another process, but won't corrupt lines.

    Of course file handle is not file descriptor, so passing of "file handles" around is a little bit more work, but still is quite possible.

    With multi-threaded processes things are similar. Even though there are internal mutexes (though I'm not sure here about perl), still one has to make sure that buffering is line-oriented and file descriptor is in append mode.

Re^3: Sharing a filehandle with an asynchronous event
by thanos1983 (Parson) on Jan 24, 2018 at 08:39 UTC

    Hello stevieb,

    I am glad that it worked for you my proposed solution. To be honest when ever I need to do some logging I use this module. It is so powerful and flexible to do many many things.

    Regarding: That said, I'm still wondering if there's a real, feasible way to "share" a file handle across procs (forks, really). I was reading yesterday the module AnyEvent that maybe can do what you are asking for. Unfortunately I did not spend time to experiment with it but maybe you can give it a try.

    Never the less if you manage to resolve your problem update us also so we can have a reference for a possible similar case in future :)

    BR / Thanos

    Seeking for Perl wisdom...on the process of learning...not there...yet!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1207788]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2024-04-19 03:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found