Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式在C中发送Enter键_C - Fatal编程技术网

如何以编程方式在C中发送Enter键

如何以编程方式在C中发送Enter键,c,C,这是一个C控制台/终端程序 我想让用户等待程序做一些后台工作,直到后台工作完成或用户点击按键。我用一句话来表达: getchar(); 我还有另外一条线索做背景工作。 当线程即将完成时,我希望线程以编程方式发送键,以便控件在getchar语句之后继续 这怎么可能呢?getchar函数将一直阻塞,直到字符到达。虽然不是标准的C,但您可以在循环中使用调用来等待给定的文件句柄可读,然后读取它。这将类似于以下演示代码: 包括 包括 包括 int mainvoid{ fd_集rfds; 结构时间值电视;

这是一个C控制台/终端程序

我想让用户等待程序做一些后台工作,直到后台工作完成或用户点击按键。我用一句话来表达:

getchar();
我还有另外一条线索做背景工作。 当线程即将完成时,我希望线程以编程方式发送键,以便控件在getchar语句之后继续

这怎么可能呢?

getchar函数将一直阻塞,直到字符到达。虽然不是标准的C,但您可以在循环中使用调用来等待给定的文件句柄可读,然后读取它。这将类似于以下演示代码:

包括 包括 包括 int mainvoid{ fd_集rfds; 结构时间值电视; 内部检索; 为一个角色而斗争。。。; 为了{ FD_ZERO&rfds; FD_SET0和rfds; tv.tv_sec=1; tv.tv_usec=0; 如果选择1,&rfds,NULL,NULL,&tv>0中断; putsDelay,做一些事情,然后等待。。。; } int ch=getchar; printfCharacter可用,它是“%c”。\n,ch; 返回0; } 在你的特殊情况下,我不会有一个无限循环;;。相反,我会做一些类似的事情:

int仍然运行=1; 还在跑的时候{ ... }
然后将后台任务设置为“仍然运行”为零,以使循环退出,而不考虑按键。

在普通标准C中?那是不可能的。您需要使用特定于操作系统的功能将文本插入到进程的标准输入中。@KfirVentura是的,它向标准输出写入一个字符,而OP希望从标准输入读取。输出到stdout的结果并不是stdin。似乎在这里使用信号也是一种解决方案。也许?