Differenze tra le versioni di "Conoscere con la funzione esterna getrlimit() i valori limite che il kernel impone per alcune risorse"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione esterna ''getrlimit()'', dichiarata nella libreria ''/sys/resource.h'', consente di conoscere i limiti di alcune risorse. A ciascuna risorsa è associato un limit...")
 
Riga 1: Riga 1:
La funzione esterna ''getrlimit()'', dichiarata nella libreria ''/sys/resource.h'', consente di conoscere i limiti di alcune risorse.
+
La funzione esterna ''getrlimit()'', dichiarata nella libreria "''/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''.
 
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 dinamica condivisa: "''libc.so.6''"
  
<FONT Color=red size=4><B>Pagina in costruzione !</b></font>
+
 
 +
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 dell'utente reale del processo 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
 +
 +
<FONT Color=gray>' ''int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits)''
 +
' ''Put the soft and hard limits for RESOURCE in *RLIMITS.''</font>
 +
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, lim.rlim_max
 +
 
 +
'''End'''
 +
 
 +
 
 +
 
 +
 
 +
=Riferimenti=
 +
* http://www.gnu.org/software/libc/manual/html_node/Limits-on-Resources.html
 +
* http://man7.org/linux/man-pages/man2/getrlimit.2.html
 +
* http://www.go4expert.com/articles/getrlimit-setrlimit-control-resources-t27477/

Versione delle 07:59, 13 lug 2016

La funzione esterna getrlimit(), dichiarata nella libreria "/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 dinamica 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 dell'utente reale del processo 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, lim.rlim_max
  
End



Riferimenti