Saya menjalankan executable di bash
./code > log
Ini menunjukkan pesan kesalahan sesekali di terminal sedangkan semua pernyataan printf masuk ke file log. Saya jalankan kembali seperti di bawah ini
./code >& log
Sekarang, pesan kesalahan sesekali juga masuk ke log. Tetapi jika ada kesalahan segmentasi, itu masih ditampilkan di terminal. Mengapa? Bagaimana cara membuat pesan Segmentation fault (core dumped)
masuk ke file log?
user $ bash --version
GNU bash, versi 4.2.24 (1) -release (i686-pc-linux-gnu)
sumber
help trap
trap
Perintah shell menjebak sinyal yang dikirim ke shell . Jadi tidak akan berhasil menangkap yang dikirim ke program Anda.Pesan "segmentasi kesalahan" dicetak ke stderr, tapi itu adalah kesalahan standar shell, bukan kesalahan standar program. Shell mencetak pesan ini ketika mendeteksi bahwa program telah diakhiri karena sinyal.
Anda dapat membungkam pesan dengan mengarahkan stderr di sekitar bagian skrip shell yang menjalankan program:
sumber