首頁  >  文章  >  後端開發  >  如何在 Linux 上模擬 `kbhit()` 和 `getch()` 功能?

如何在 Linux 上模擬 `kbhit()` 和 `getch()` 功能?

Susan Sarandon
Susan Sarandon原創
2024-10-31 03:45:01278瀏覽

How to Emulate `kbhit()` and `getch()` Functionality on Linux?

在Linux 上模擬kbhit() 和getch() 功能

kbhit() 和getch() 函數通常在Windows 中使用檢查輸入而不中斷循環的執行。但是,Linux 作業系統本身不支援這些函數。

kbhit() 等效項

要在 Linux 上實作類似的功能,您可以利用 Morgan Mattews 的實作kbhit() 函數。此實作與 POSIX 相容系統相容,可以在此處找到。

getch() 等效項

由於 kbhit() 在 termios 層級停用緩衝,因此它還解決了 getchar() 問題。您可以原樣使用 getchar(),而無需像提供的 Windows 範例中那樣停用緩衝。

組合兩個函數

一旦實作了 kbhit() 功能,您可以將 Windows 範例改編為 Linux,如下所示:

<code class="C++">#include <unistd.h>
#include <iostream>

int main()
{
    while (true)
    {
        if (kbhit())
        {
            int key = getch();
            if (key == 'g')
            {
                std::cout << "You pressed G" << std::endl;
            }
        }
        usleep(500000);
        std::cout << "Running" << std::endl;
    }
}</code>

以上是如何在 Linux 上模擬 `kbhit()` 和 `getch()` 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn