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.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
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''".
+
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''.
 
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''.
Riga 5: Riga 5:
 
Al secondo parametro della funzione esterna va passata la ''Struttura'' esterna, chiamata "''rlimit''" e dichiarata nel file header "''/bits/resource.h''".
 
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'' ".
  
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 del processo ''Padre'' chiamante.
 
 
 
 
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"
 
  Library "libc:6"
 
   
 
   
Riga 27: Riga 25:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim lim As New Rlimit
 
   Dim lim As New Rlimit
 
    
 
    
  getrlimit(RLIMIT_NPROC, lim)
+
  getrlimit(RLIMIT_NPROC, lim)
 
      
 
      
  Print lim.rlim_cur, lim.rlim_max
+
  Print lim.rlim_cur
 
+
 
  '''End'''
+
  End
 
 
  
  
Riga 44: Riga 41:
 
* http://man7.org/linux/man-pages/man2/getrlimit.2.html
 
* http://man7.org/linux/man-pages/man2/getrlimit.2.html
 
* http://www.go4expert.com/articles/getrlimit-setrlimit-control-resources-t27477/
 
* http://www.go4expert.com/articles/getrlimit-setrlimit-control-resources-t27477/
 +
* http://www.informit.com/articles/article.aspx?p=23618&seqNum=6

Versione attuale delle 16:15, 8 giu 2023

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