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

Re^3: Using stderr from Inline::C: (part deux)

by syphilis (Canon)
on May 23, 2013 at 12:23 UTC ( #1034935=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Using stderr from Inline::C: (part deux)
in thread Using stderr from Inline::C: (part deux)

I wondering how I might use the NO_XSLOCKS that bulk88 mentions with I::C?

Should be easy enough.
Looking at the post to which bulk88 provided a link, I see:

>You need to add > > #define NO_XSLOCKS > >before > > #include <xsub.h>
If that's correct, then this should provide what's needed:
use Inline C => Config => PRE_HEAD => "#define NO_XSLOCKS\n";
(Not sure if the '\n' is needed or not ... and haven't checked.)
The PRE_HEAD config option is a recent addition (beginning in 0.51) - it's documented in 'perldoc Inline::C'.

Cheers,
Rob


Comment on Re^3: Using stderr from Inline::C: (part deux)
Select or Download Code
Re^4: Using stderr from Inline::C: (part deux)
by BrowserUk (Pope) on May 23, 2013 at 22:31 UTC
    The PRE_HEAD config option is a recent addition (beginning in 0.51) - it's documented in 'perldoc Inline::C'.

    Thank you. That looks perfect for this and a couple of other things I've wanted in the past.

    With regard to using PerlIO*. I often use I::C to prototype ideas that ultimately might end up being used or reused in stand alone C programs.

    I::C is so useful because it allows me to try things out without having to build a working C front end first, (file handling, argument handling, error handling etc.), which Perl gives me, and does so much better anyway. Hence I often try to avoid using any XS/perlish stuff within the routines themselves.

    In this case, the output I'm writing goes to a file that exists (is opened/written/closed) entirely within the C code, but it runs a long time and is quite hard to get right. Rather than having to wait until the code completes and then inspect the file, I wanted to direct the output to stderr so that I could send it to the file by way of tee, so that I could keep an eye on things and abort early if I could see they were going wrong.

    That should have been as easy as just substituting stderr for the FILE* I've opened in the output calls, but then I re-encountered the old problem.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      With regard to using PerlIO*. I often use I::C to prototype ideas that ultimately might end up being used or reused in stand alone C programs

      Aaah, yes - I've often done much the same.

      Cheers,
      Rob

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (11)
As of 2014-07-30 14:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (234 votes), past polls