Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
blackman85 ha scritto:Ora però come faccio a sapere se c'è una pipe? Perché se leggo dallo stdin e non c'è una pipe si blocca il programma fino a che non si preme invio...
Un programma C che legge stdin,
non puo` discernere da dove viene l'input,
vale per BSD/UNIX e vale per Linux.
Aggiungi una opzione -p (pipe) al tuo programma,
se lo chiami con l'opzione -p sei consapevole di quello che fai,
se lo chiami senza opzione esce, con o senza error message,
a tua discrezione.
Ansa89 ha scritto:Dovresti controllare lo stato del buffer di stdin e, se è vuoto, far uscire il programma (o una qualunque altra azione scelta da te).
avevo pensato a qualcosa del genere ma non ho idea di come fare....
Mario Vanoni ha scritto:
blackman85 ha scritto:Ora però come faccio a sapere se c'è una pipe? Perché se leggo dallo stdin e non c'è una pipe si blocca il programma fino a che non si preme invio...
Un programma C che legge stdin,
non puo` discernere da dove viene l'input,
vale per BSD/UNIX e vale per Linux.
Aggiungi una opzione -p (pipe) al tuo programma,
se lo chiami con l'opzione -p sei consapevole di quello che fai,
se lo chiami senza opzione esce, con o senza error message,
a tua discrezione.
ottima idea però pensavo ai tool linux ad esempio se scrivo:
Molto rozzamente legge i primi 4 caratteri dello standard input. Se il programma non lo metti in pipe con qualcosa, allora si aspetta che sia tu a dargli qualcosa, altrimenti se lo metti in pipe funziona come chiedi. Ricorda che la pipe ridireziona lo standard output di un comando nello standard input di un altro.
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama