Autore Topic: Chiarimento su lettura processo  (Letto 452 volte)

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Chiarimento su lettura processo
« il: 09 Aprile 2021, 21:37:14 »
Ciao a tutti, avrei una domanda per i più esperti di Gambas.

Sto utilizzando questo codice per leggere un processo:

Codice: [Seleziona]
Dim sStr As String
 
  Read #$hProcess, sStr, -256

poi il codice prosegue a fare quello che deve.

La domanda è questa,  il valore -256 va ad indicare di leggere blocchi da 256 byte, che vantaggi può dare se aumentato  o che problemi crea se troppo basso.
Nel mio programma vado ad analizzare le stringhe prodotte da comandi eseguiti in bash con output anche molto lunghi e volevo capire come ottimizzarli

Grazie in anticipo

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #1 il: 09 Aprile 2021, 23:38:35 »
Si potrebbe affermare che il segno meno davanti al numero di byte da leggere ti garantisce dallo sforamento, ad esempio se io devo leggere un processo come questo:

Codice: [Seleziona]
Private myprocess As Process

Public Sub Button1_Click()

 myprocess.Begin
 Write #myprocess, "test"
 myprocess.Send

End

Public Sub Form_Open()

 myprocess = Exec ["cat"] For Read Write As "rr"

End

Public Sub rr_read()
 
Dim sStr As String = Read #myprocess, -40

Print sstr
 
End

Essendo myprocess di 4 byte se non mettessi il meno davanti a 40 otterrei un errore.
Il meno ti garantisce la lettura fino all'ultimo byte e non oltre.

Ma l'esperto in materia è vuott, spero vorrà completare il ragionamento.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #2 il: 10 Aprile 2021, 00:17:10 »
Ma l'esperto in materia è vuott




...spero vorrà completare il ragionamento.
Io confermo quanto detto da Gianluigi.
Modificando il valore del terzo parametro e mantenendo il segno negativo, vari semplicemente la quantità di byte letti dalla funzione "Read", preservando la garanzia (grazie a quel segno "meno") di non superare nella lettura il numero totale di byte del flusso aperto (...e quindi di non incorrere nell'errore "End of File").


« Ultima modifica: 10 Aprile 2021, 00:20:57 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #3 il: 10 Aprile 2021, 15:10:42 »
Grazie per le risposte, ora il concetto mi è più chiaro.

Quindi in linea teorica più è grande il numero e meglio è....

Giusto per farvi capire i miei dubbi, mediante un processo eseguo un terminale a cui passo il comando:

Codice: [Seleziona]
 dnf list |grep nomepacchetto 

dopo di che leggo il processo e quindi analizzo l'output per estrarre il nome del pacchetto, eliminano versione e repo in cui si trova e lo mando ad una listbox.

Per ricerche abbastanza definite il tutto funziona. Ma se la ricerca è vaga, tipo  ....grep lib, con tante voci, vengono fuori degli sbagli cioè qualche nome non viene inserito nella listbox, o per ricerche consecutive in cui ricerco installati, non installati e aggiornamenti con comandi inviati in automatico appena termina quello precedente,  alcuni nomi della prima ricerca finiscono sulla seconda.

Non so se sono riuscito a spiegarmi, in caso contrario mi scuso :)

 

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #4 il: 10 Aprile 2021, 16:44:44 »
Non dimenticare la parola chiave WAIT se vuoi concatenare i comandi, altrimenti il secondo comando inizierà prima della fine del primo!

Vedi:
http://gambaswiki.org/wiki/lang/exec?l=it
http://gambaswiki.org/wiki/lang/shell?l=it
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #5 il: 10 Aprile 2021, 16:55:24 »

Grazie del consiglio, ho provato ad usarla ma sembra non funzionare o molto più probabilmente non credo di usarla nel modo giusto.

Cerco di buttare già un esempio di utilizzo da postare.

Capisco che così sia difficile aiutarmi....

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Chiarimento su lettura processo
« Risposta #6 il: 10 Aprile 2021, 16:58:38 »
Cerco di buttare già un esempio di utilizzo da postare.

...sarebbe meglio, sì.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »