我是编程的新手,所以请耐心等待。也使用GNU / Linux。
所以我试图创建一个循环来检查我是否使用CTRL + D结束循环到MySQL连接,但同时不断检查与服务器的连接。
while ((c = getchar()) != EOF)
{
if (mysql_ping(conn) == 1)
{
fprintf(stderr, "Error: %s\n", mysql_error(conn));
}
}
问题是我经常要按ENTER键来检查连接是否仍然存在,但是我希望它在自动检查与MySQL服务器的连接的同时仍具有EOF功能,以便人们可以关闭连接。
我知道为什么会这样,我只是不确定如何解决它。我需要其他内置函数或可能的外部库吗?
答案 0 :(得分:3)
问题是getchar()是一个阻塞函数。这意味着,无论何时调用getchar(),它都会等到按下某个键。
尝试这样的事情。
对于linux ... 您需要安装ncurses库。
#include <curses.h>
...
int key;
nodelay(stdscr, TRUE);
while (1) {
if ((key = getch()) == ERR) { // no key is pressed...
if(mysql_ping(conn) == 1){
fprintf(stderr, "Error: %s\n", mysql_error(conn));
}
}else { // key is pressed...
if (key == EOF) break;
}
}
对于Windows ......
#include <conio.h>
...
while(1){
if (_kbhit()){
int key = _getch();
if (key == EOF) break;
}
if(mysql_ping(conn) == 1){
fprintf(stderr, "Error: %s\n", mysql_error(conn));
}
}