Differenze tra le versioni di "Generare arbitrariamente un errore "CPU Time Limit Exceeded" con la funzione esterna vlimit()"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
La funzione esterna ''vlimit( )'', dichiarata nel file header di sistema ''/usr/include/x86_64-linux-gnu/sys/vlimit.h'', pone un limite ad una risorsa di un processo.
+
La funzione esterna "vlimit()", dichiarata nel file header di sistema ''/usr/include/x86_64-linux-gnu/sys/vlimit.h'', pone un limite ad una risorsa di un processo.
  
E' possibile terminare un processo dopo tot scondi, generando un errore di sistema "''CPU time limit exceeded''". Viene, dunque, permesso al processo di utilizzare la CPU per non più ditot secondi.
+
E' possibile terminare un processo dopo tot secondi, generando un errore di sistema "''CPU time limit exceeded'' ". Viene, dunque, permesso al processo di utilizzare la CPU per non più di tot secondi.
  
V'è da precisare che comunque la risorsa ''vlimit( )'', seppur ancora funzionante, è ormai superata.  <SUP>&#91;[[#Note|nota 1]]&#93;</sup>
+
V'è da precisare che comunque la risorsa "vlimit()", seppur ancora funzionante, è ormai superata.  <SUP>&#91;[[#Note|nota 1]]&#93;</sup>
  
  
Riga 21: Riga 21:
 
    
 
    
 
   i = vlimit(LIM_CPU, 5)
 
   i = vlimit(LIM_CPU, 5)
   If i = -1 Then Error.Raise("Error a la función externa 'vlimit()' !")
+
   If i = -1 Then Error.Raise("Errore !")
 
    
 
    
 
   Do    <FONT Color=gray>' ''...ὁ ἄπειρος κύκλος.''</font>
 
   Do    <FONT Color=gray>' ''...ὁ ἄπειρος κύκλος.''</font>

Versione attuale delle 16:27, 22 giu 2024

La funzione esterna "vlimit()", dichiarata nel file header di sistema /usr/include/x86_64-linux-gnu/sys/vlimit.h, pone un limite ad una risorsa di un processo.

E' possibile terminare un processo dopo tot secondi, generando un errore di sistema "CPU time limit exceeded ". Viene, dunque, permesso al processo di utilizzare la CPU per non più di tot secondi.

V'è da precisare che comunque la risorsa "vlimit()", seppur ancora funzionante, è ormai superata. [nota 1]


Vediamo un esempio, dove l'errore di sistema sarà generato dopo 5 secondi:

Library "libc:6"

Private Enum LIM_NORAISE = 0, LIM_CPU, LIM_FSIZE, LIM_DATA, LIM_STACK, LIM_CORE, LIM_MAXRSS

' int vlimit (enum __vlimit_resource __resource, int __value)
' Set the soft limit for RESOURCE to be VALUE.
Private Extern vlimit(__resource As Integer, __value As Integer) As Integer


Public Sub Main()
 
 Dim i As Integer
 
 i = vlimit(LIM_CPU, 5)
 If i = -1 Then Error.Raise("Errore !")
  
 Do    ' ...ὁ ἄπειρος κύκλος.
   Wait 0.01
 Loop
  
End



Note