Setelah pencarian tampaknya ascii dari EOF adalah -1
, tetapi bagaimana saya echo
bisa keluar?
Tujuan saya melakukan ini adalah untuk menguji apakah berperilaku sama dengan menekan ctrl-d
jika saya baru saja echo
keluar EOF
.
Tidak ada cara untuk menggemakan EOF. EOF hanya dapat dihasilkan dengan mencapai akhir file atau dengan menekan tombol yang terikat pada eof
pengaturan terminal ( CtrlDsecara default) ketika file yang sedang dibaca terikat ke terminal.
EOF
didefinisikan seperti-1
di stdio.h? mengapa tidak bisa mengulanginya jika kita tahu nilai ascii-nya?int
dengan nilai -1 (atau 4294967295 jika kami menganggap versi yang tidak ditandatangani) tidak mungkin menjadi karakter karena karakter hanya dapat memiliki nilai dari 0 hingga 255 inklusif.int
pertama?fgetc(3)
halaman manual.Di bash Anda bisa menulis
exec 1>&-
untuk menutup file descriptor yang dikenal sebagai stdout.Seperti yang sudah dikatakan Ignacio, EOF bukan karakter, jadi pertanyaan bagaimana "menggemakan EOF" tidak masuk akal sejak awal. Anda dapat menggemakan karakter (byte) atau Anda dapat menutup deskriptor file, tetapi Anda tidak pernah dapat menggemakan EOF.
sumber