gpt4 book ai didi

C:通过按 p 而不是 Ctrl + Z 来暂停进程

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:19 25 4
gpt4 key购买 nike

是否可以通过按键盘上的按钮(例如“P”)暂停线程/进程,然后通过按“R”而不是 Ctrl+Z 来恢复进程?

我的尝试如下:

int sig_pause = 0; // define global variable 
....


void* thread_function (void *ptr)
{
....
while(sig_flag) usleep(100); // wait if sig_flag is 1
}



/* pause function */
void pause_handler(int sig)
{
if(sig==SIGTSTP) sig_pause=1-sig_pause;
}



int main(void){
....
signal(SIGTSTP, pause_handler);
}

上述方法通过按 ctrl + z 可以正常工作,但我不知道如何根据我的按键自定义它。

最佳答案

那是因为信号只捕获发送到程序线程的非常具体的信号,通常是通过操作系统或从另一个进程。标准 C 并没有办法对任何键盘输入执行此操作。您需要的是一个键盘监听器,它需要绑定(bind)到运行该进程的窗口。通常不包括控制台,当我环顾四周时我找不到任何东西。如果您有某种 GUI,您可能会使用线程或至少使用一些 GUI 库的事件函数。

您可以使用线程让另一个线程重复调用一些修改后的函数,该函数具有对可用于暂停程序的标志的共享内存访问。该线程可以处理可能阻塞的标准输入调用,如果您可以找到适用于您的操作系统的代码并进行编译以确保调用不会阻塞并且不需要可能有效的“输入”键。您只是不应该或不能同时尝试从标准输入读取多个内容。

反正我能想到的就这些了。<​​/p>

http://www.geeksforgeeks.org/multithreading-c-2/

您可以创建一个线程,该线程具有一个带有无限循环的函数,该函数会执行等待操作并捕获您的输入。只是不要调用它。 (你想让它运行。)那么你所需要的只是一个基于输入和静态变量或“标志”的状态机。

关于C:通过按 p 而不是 Ctrl + Z 来暂停进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com