我有一个 c++ 控制台应用程序,它可以选择通过按任意键(通过使用 kbhit() 实现)来中断,在这种情况下,它会打印它所做的事情并退出(或者可以留下来完成工作(一些记录)并且仍然打印反馈)。我正在为该控制台应用程序制作 ac# gui 应用程序(我正在从 c# 表单调用 exe 文件),而不是按键盘上的任何键,我使用的是发送 Environment.NewLine (或“\n ") 到重定向的输入,在 c++ 应用程序中,我现在必须使用与 kbhit() 不同的东西才能使其工作。我尝试使用 cin.get(),例如:
if (kbhit() || (cin.get() > 0))
stop_recording=true;
但是 cin.get() 是一个阻塞函数,如果我希望控制台应用程序运行到最后,它不会在不按停止按钮的情况下关闭。是否有任何类似于 cin.get() 的函数实际上没有阻塞,或者可能是从 c# 向我的控制台应用程序进程发送“任何密钥”的不同方式?