现在我有一个 C++ 客户端应用程序,它使用 mysql.h 连接到 MYSQL 数据库,并且必须执行一些逻辑以防断开连接。我想知道这是否是在我的客户端断开连接的情况下重新连接到 MYSQL 数据库的最佳方式。
bool MYSQL::Reconnect(const char *host, const char *user, const char *passwd, const char *db)
{
bool out = false;
pid_t command_pid = fork();
if (command_pid == 0)
{
while(1)
{
sleep(1);
if (mysql_real_connect(&m_mysql, host, user, passwd, db, 0, NULL, 0) == NULL )
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&m_mysql));
}
else
{
m_connected = true;
out = true;
break;
}
}
exit(0);
}
if (command_pid < 0)
fprintf(stderr, "Could not fork process[reconnect]: %s\n", mysql_error(&m_mysql));
return out;
}
现在我接受了我所有的参数并进行了分叉。子进程每秒都尝试使用 sleep() 语句重新连接。这是一个好方法吗?谢谢