![]() |
1
3
这是因为信号只捕获发送到程序线程的非常特定的信号,通常是通过操作系统或其他进程发送的。对于任何键盘输入,标准C实际上都没有办法做到这一点。您需要的是一个键盘侦听器,它需要绑定到运行进程的窗口。通常情况下,这不包括控制台,当我环顾四周时,我找不到任何东西。如果您有某种GUI,您可能会使用线程或至少GUI库的一些事件函数。 您可能可以使用线程让另一个线程在repeat上调用一些修改过的函数,该函数具有对可用于暂停程序的标志的共享内存访问。该线程可以处理可能阻塞的标准输入调用,如果您可以找到在操作系统上工作的代码,并进行编译,以确保调用没有阻塞,并且不需要按enter键。你不应该也不可能同时有多个东西试图从标准输入中读取。
http://www.geeksforgeeks.org/multithreading-c-2/ 您可以创建一个线程,该线程具有一个具有无限循环的函数,该循环执行等待的任务并捕获您的输入。只是不要打电话给join。(您想让它运行。)然后,您只需要一个基于输入和静态变量或“标志”的状态机 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |