gpt4 book ai didi

c - 当 stdin 在 C 中为 EOF 时退出循环?

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

我怎样才能跳出这个循环?

while(1){
//continuously blink an led
//stop when user hits CTRL+D
}
//do other stuff

我尝试了 while(fgets(s, BUFSIZ, stdin) != NULL),当然它会在继续之前等待用户输入。我希望循环内的代码持续运行,并且仅在用户点击 CTRL+D 时中断。

我已经通过中断在低级别完成了此操作,但不知道如何在高级环境中执行此操作。

平台是 Raspberry Pi 上的 Raspbian(内核 3.10)

最佳答案

也许这个解决方案将 Ctrl+D 转换为 Ctrl+C 并将 Ctrl+C 转换为 Ctrl+D使用术语上限可能对您有所帮助:https://stackoverflow.com/a/1516414/1405208 .

Ctrl+D 将因此发送 SIGINT 信号。你只需要捕获它。不过,您可能必须使用全局变量。

volatile sig_atomic_t ctrld_pressed = 0;

void ctrld(int sig)
{
ctrld_pressed = 1;
}

int main()
{
signal(SIGINT, ctrld);
while (!ctrld_pressed)
{

}
}

关于c - 当 stdin 在 C 中为 EOF 时退出循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271765/

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