Problema eseguendo un comando linux

Sante Caserio

Nuovo Utente
26 Set 2008
2
0
0
Ho uno script php che funziona da riga di comando che, in alcuni casi, emette un bip. Per fare questo utilizza il comando unix beep:

system('beep ...parametri');

Nel caso in cui beep non sia presente nel sistema (perchè si utilizza un sistema non di tipo Unix, oppure semplicemente il pacchetto non è installato) il programma genere il bip scrivendo il carattere ascii 7 (BEL):

if (system('beep ...parametri')===false)
echo (chr(7));

Il problema è che in questo caso nella shell compare anche il simpatico messaggio: "sh: beep: not found". Vorrei evitare questa cosa, molto brutta dal punto di vista dell'utente. Come posso fare secondo voi??

NB: chiaramente in questo caso non serve a nulla una soluzione tipo @system('beep ...parametri'), perchè a livello di PHP non si verifica nessun errore, l'errore è casomai a livello di sistema.
NB2: Ho già provato a vedere se il comportamento cambia utilizzando exec() o passthru() o `beep`, ma non cambia nulla.
 
Hai provato a redirezionare lo standard error su null?

Linux: beep 2> /dev/null
DOS: beep 2> nul
 
Hai provato a redirezionare lo standard error su null?

Linux: beep 2> /dev/null
DOS: beep 2> nul

L'ho risolto utilizzando l'operatore `comando`, che esegue "comando". In questo modo, l'errore non viene mostrato su consolle.

Non avevo pensato di ridirezionare lo standard output perchè ero convinto che su DOS non si potesse fare. Grazie per questa informazione, sicuramente mi sarà utilissima più avanti.
 

Discussioni simili