Mengakses Input Papan Kekunci dalam Linux Menggunakan kbhit() dan getch() Setara
Kod Windows yang disediakan menggunakan fungsi khusus platform _kbhit( ) dan _getch() untuk memantau input papan kekunci tanpa mengganggu gelung program. Walau bagaimanapun, fungsi ini tidak tersedia pada sistem Linux, memerlukan pendekatan alternatif.
Setara kbhit() Mematuhi POSIX
Jika sistem Linux anda tidak mempunyai pengepala conio.h yang menyokong kbhit(), pertimbangkan untuk memanfaatkan pelaksanaan Morgan Mattews. Penyelesaian ini mencontohi kefungsian kbhit() pada mana-mana sistem yang mematuhi POSIX.
Menyelesaikan Isu getchar()
Menyahaktifkan penimbalan pada peringkat termios menyelesaikan bukan sahaja kbhit() isu tetapi juga menangani sebarang kebimbangan yang berkaitan dengan getchar() seperti yang ditunjukkan dalam sumber yang disediakan. Pendekatan ini memastikan input diterima serta-merta tanpa menunggu tekan kekunci Enter.
Integrasi dengan Kod Contoh
Untuk menyesuaikan kod contoh yang diberikan kepada sistem Linux, pertimbangkan untuk menggantikan _kbhit () dan _getch() dengan setara mematuhi POSIX mereka. Kod yang disemak di bawah ini menunjukkan penyepaduan ini:
<code class="cpp">#include <termios.h> #include <unistd.h> #include <iostream> int main() { // Disable input buffering termios oldt, newt; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); while (true) { if (kbhit()) { char c = getchar(); if (c == 'g') { std::cout << "You pressed G" << std::endl; } } sleep(500); std::cout << "Running" << std::endl; } // Restore input buffering tcsetattr(STDIN_FILENO, TCSANOW, &oldt); return 0; }</code>
Kod yang diubah suai ini menggunakan pelaksanaan kbhit() Mattews dan menyahaktifkan penimbalan input untuk mencapai kefungsian yang serupa seperti kod Windows asal.
Atas ialah kandungan terperinci Cara Mencapai Input Papan Kekunci Tidak Menyekat dalam Linux: Panduan untuk kbhit() dan getch() Setara. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!