Generare arbitrariamente un errore "CPU Time Limit Exceeded" con la funzione esterna vlimit()

Da Gambas-it.org - Wikipedia.
Versione del 29 nov 2016 alle 10:05 di Vuott (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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()' !")
  
  While True    ' ...ὁ ἄπειρος κύκλος.
    Sleep 0.01
  Wend
  
End



Note