Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse

Da Gambas-it.org - Wikipedia.

La funzione esterna "getrlimit()", dichiarata nel file header /sys/resource.h, consente di conoscere i limiti di alcune risorse di sistema indicate nel file header predetto. La risorsa da verificare va indicata nel primo parametro della funzione esterna "getrlimit()" attraverso una costante identificativa della risorsa medesima fra quelle dichiarate con la Direttiva #define nel file header /bits/resource.h.

A ciascuna risorsa è associato un limite soft ed un limite hard. Il limite soft è il valore che il kernel impone per la risorsa corrispondente. Il limite hard agisce come limite massimo per il limite soft.

Al secondo parametro della funzione esterna va passata la Struttura esterna, chiamata "rlimit" e dichiarata nel file header "/bits/resource.h".

E' necessario richiamare in Gambas la libreria condivisa: "libc.so.6 ".

Mostriamo un esempio, nel quale si verificherà il limite imposto dal kernel al numero massimo di processi Figli che può essere creato per l'ID del processo Padre chiamante.

Library "libc:6"

Public Struct rlimit
  rlim_cur As Long
  rlim_max As Long
End Struct

Private Enum RLIMIT_CPU = 0, RLIMIT_FSIZE, RLIMIT_DATA, RLIMIT_STACK, RLIMIT_CORE,
             RLIMIT_RSS, RLIMIT_NPROC, RLIMIT_NOFILE, RLIMIT_MEMLOCK,
             RLIMIT_AS, RLIMIT_LOCKS, RLIMIT_SIGPENDING, RLIMIT_MSGQUEUE,
             RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME, RLIMIT_NLIMITS

' int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits)
' Put the soft and hard limits for RESOURCE in *RLIMITS.
Private Extern getrlimit(__resource As Integer, __rlimits As Rlimit) As Integer


Public Sub Main()

 Dim lim As New Rlimit
 
 getrlimit(RLIMIT_NPROC, lim)
   
 Print lim.rlim_cur
 
End


Riferimenti