- In Bash, ho appreso che il segnale di fine
può essere modificato da qui
documento. Ma per impostazione predefinita come posso
segnalare la fine dell'input stdin? - Mi è capitato di scoprire che con cat e
chardet, i loro input stdin possono essere
segnalati come terminati da Ctrl+d. Ma
mi sembra di ricordare che Ctrl+d e
Ctrl+c sono simili alla fine
dell'esecuzione di un comando in esecuzione. Allora
mi sbaglio?
Risposta accettata:
Ctrl+D , quando digitato all'inizio di una riga su un terminale, indica la fine dell'input. Questo non è un segnale in senso unix:quando un'applicazione sta leggendo dal terminale e l'utente preme Ctrl+D , l'applicazione viene informata che è stata raggiunta la fine del file (proprio come se stesse leggendo da un file e avesse superato l'ultimo byte).
Ctrl+C invia un segnale, SIGINT. Per impostazione predefinita SIGINT (il segnale di interruzione) uccide l'applicazione in primo piano, ma l'applicazione può catturare il segnale e reagire in un modo diverso (ad esempio, la shell stessa cattura il segnale e interrompe la riga che hai iniziato a digitare, ma non lo fa t esce, mostra un nuovo prompt e attende una nuova riga di comando).
Puoi modificare i caratteri associati a fine file e SIGINT con il stty
comando, ad es. stty eof a
renderebbe a
il carattere di fine file e stty intr ^-
disabiliterebbe il carattere SIGINT. Questo è raramente utile.