How can I detect if there is input waiting on stdin on windows?

前端 未结 3 1890
独厮守ぢ
独厮守ぢ 2020-12-17 02:13

I want to detect whether or not there is input waiting on stdin in Windows.

I use the following generic structure on Linux:

fd_set currentSocketSet;         


        
3条回答
  •  悲哀的现实
    2020-12-17 02:30

    As stated in the ReadConsoleInput() documentation:

    A process can specify a console input buffer handle in one of the wait functions to determine when there is unread console input. When the input buffer is not empty, the state of a console input buffer handle is signaled.

    To determine the number of unread input records in a console's input buffer, use the GetNumberOfConsoleInputEvents function. To read input records from a console input buffer without affecting the number of unread records, use the PeekConsoleInput function. To discard all unread records in a console's input buffer, use the FlushConsoleInputBuffer function.

    You can use GetStdHandle() to get a handle to STDIN for use in the above functions.

提交回复
热议问题