Adaptando cosas que fui encontrando y mediante prueba y error he logrado esta función para saber la carga del sistema, ya que en el programa Destornishador cuando proceso muchos archivos mediante comandos shell, el programa le manda a bash las tareas pero si el cpu esta sobrecargado a este no le importaba y seguía mandando trabajos, ahora con esta pequeña función antes de mandar una tarea nueva le "pregunta" al sistema cual es su carga promedio.
Espero que a alguien le sirva de utilidad.
Public Function funSystemLoad() As Float
'' Devuelve la carga promedio del procesador de uno o mas nucleos
Dim strSysLoad As String
Dim floSysLoad As Float
Dim c As Integer
Dim mxfSysLoad As New Float[]
Shell "top -n 1 -b | grep 'load average:'" & " 2>&1" To strSysLoad
strSysLoad = Replace(strSysLoad, "load average: ", "#")
strSysLoad = Split(strSysLoad, "#")[1]
strSysLoad = Replace(strSysLoad, ", ", "~")
strSysLoad = Replace(strSysLoad, ",", ".")
strSysLoad = Replace(strSysLoad, "\n", "")
If InStr(strSysLoad, "~") = 0 Then
floSysLoad = CFloat(strSysLoad)
Else
mxfSysLoad = Split(strSysLoad, "~")
For c = 0 To mxfSysLoad.Max
Select c
Case 0
floSysLoad = mxfSysLoad[c]
Case mxfSysLoad.Max
floSysLoad = (floSysLoad + mxfSysLoad[c]) / c
Case Else
floSysLoad = floSysLoad + mxfSysLoad[c]
End Select
Next
Endif
Return floSysLoad
End
'' Devuelve la carga promedio del procesador de uno o mas nucleos
Dim strSysLoad As String
Dim floSysLoad As Float
Dim c As Integer
Dim mxfSysLoad As New Float[]
Shell "top -n 1 -b | grep 'load average:'" & " 2>&1" To strSysLoad
strSysLoad = Replace(strSysLoad, "load average: ", "#")
strSysLoad = Split(strSysLoad, "#")[1]
strSysLoad = Replace(strSysLoad, ", ", "~")
strSysLoad = Replace(strSysLoad, ",", ".")
strSysLoad = Replace(strSysLoad, "\n", "")
If InStr(strSysLoad, "~") = 0 Then
floSysLoad = CFloat(strSysLoad)
Else
mxfSysLoad = Split(strSysLoad, "~")
For c = 0 To mxfSysLoad.Max
Select c
Case 0
floSysLoad = mxfSysLoad[c]
Case mxfSysLoad.Max
floSysLoad = (floSysLoad + mxfSysLoad[c]) / c
Case Else
floSysLoad = floSysLoad + mxfSysLoad[c]
End Select
Next
Endif
Return floSysLoad
End