Domanda

In Linux Voglio eseguire una finestra della barra di avanzamento di Gnome Zenity da PHP.Come funziona Zenity è così:

linux-shell$ zenity --display 0:1 --progress --text='Backing up' --percentage=0
10
50
100
.

Quindi il primo comando apre la barra di avanzamento zenity allo 0 percento.Zenity prende quindi numeri di ingresso standard come percentuale della barra di avanzamento (quindi passerà dal 10% al 50% al 100% quando si digita i numeri).

Non riesco a capire come ottenere PHP per digitare questi numeri però, ho provato:

exec($cmd);
echo 10;
echo 50;
.

e:

$handle = popen( $cmd, 'w' );
fwrite( $handle, 10 );
.

E:

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w")  // stdout is a pipe that the child will write to
);

$h = proc_open($cmd, $descriptorspec, $pipes);

fwrite($pipes[1], 10);
.

Ma nessuno di loro aggiorna la barra di avanzamento.In che modo posso imitare l'effetto dello stdin sul guscio di Linux per ottenere la zenità per aggiornare la sua barra di avanzamento?

È stato utile?

Soluzione

Il tuo primo esegue il comando con una copia dello stdin dello script corrente, non il testo che fornisci.

Il tuo secondo fallisce perché stai dimenticando la nuova linea.Prova invece fwrite($handle, "10\n").Si noti che Zenity sembra saltare al 100% quando viene raggiunto EOF (ad esempio con la chiusura implicita del $handle alla fine dello script PHP).

Il tuo terzo fallisce perché stai dimenticando la nuova linea e stai scrivendo al tubo sbagliato.Prova invece fwrite($pipes[0], "10\n") e ricorda la stessa nota per quanto riguarda l'EOF come sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top