Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

call setrlimit to limit process resource usage

by jdporter (Paladin)
on May 01, 2003 at 18:20 UTC ( [id://254756]=CUFP: print w/replies, xml ) Need Help??

On 2000/05/26, In <tfhtisospckcr7spdptj58acjuqnd7jl05@4ax.com>, Bernie Cosell wrote:
> Can you set your process's (and most importantly, its children's)
> resource limits (via the setrlimit(2) system call) from Perl?

Surely. Here's an example, a wrapper around setrlimit(RLIMIT_CPU).

# Note that I've hardcoded things like EPERM,EFAULT,EINVAL from sys/ +errno.h, # SYS_setrlimit from sys/syscall.h, and RLIMIT_CPU from sys/resource +.h # it might be preferable to h2ph the respective .h files... sub set_max_cpu_time { my $n_seconds = shift; my $s = pack( 'LL', $n_seconds, $n_seconds+1 ); $! = 0; if ( syscall( 128, 0, $s ) == -1 ) # SYS_setrlimit, RLIMIT_CPU { if ( $! == 1 ) # EPERM { die "$!; Sorry, you need to be superuser to do that.\n"; } elsif ( $! == 14 ) # EFAULT { die "$!; Error: argument to setrlimit pointed to an illegal ad +dress.\n"; } elsif ( $! == 22 ) # EINVAL { die "$!; Error: the new rlim_cur exceeds the new rlim_max, or the limit specified cannot be lowered because current usa +ge is already higher than the limit.\n"; } } } # test it: set_max_cpu_time( 8 ); my $n = 0; while ( 1 ) { $n++ } # Hmm, mysteriously dumps core after about 8 seconds! :-)

Replies are listed 'Best First'.
Re: call setrlimit to limit process resource usage
by jaldhar (Vicar) on May 01, 2003 at 19:33 UTC

    Nice but did you know there already is a module BSD::Resource for doing this? And it's a lot more portable than your code.

    --
    જલધર

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2024-04-25 12:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found