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

Da Gambas-it.org - Wikipedia.
Riga 16: Riga 16:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim i As Integer
 
   Dim i As Integer
 
    
 
    
  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("Error a la función externa 'vlimit()' !")
 
    
 
    
  While True   <FONT Color=gray>' ''...ὁ ἄπειρος κύκλος.''</font>
+
  Do   <FONT Color=gray>' ''...ὁ ἄπειρος κύκλος.''</font>
    Sleep 0.01
+
    Wait 0.01
  Wend
+
  Loop
 
    
 
    
  '''End'''
+
  End
  
  

Versione delle 12:22, 10 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 scondi, generando un errore di sistema "CPU time limit exceeded". Viene, dunque, permesso al processo di utilizzare la CPU per non più ditot 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("Error a la función externa 'vlimit()' !")
  
 Do    ' ...ὁ ἄπειρος κύκλος.
   Wait 0.01
 Loop
  
End



Note