Будут ли автоматически закрываться соединения MySQL в случае сбоя моей программы на C?
К сожалению, я не очень разбираюсь в C и отлаживаю некоторый код, написанный кем-то другим.Я пытаюсь диагностировать проблему, из-за которой количество подключений к моему серверу MySQL увеличивается.Есть много запущенных программ, и это могло быть вызвано любой, но я считаю, что я сузил их до определенной.
У меня есть основания полагать, что что-то вызвало сбой программы, а затемон был перезапущен супервизором .Это могло произойти более 20 раз подряд, потому что супервизор пытается перезапустить программу после сбоя.Это все нормально, я, вероятно, смогу найти проблему сам.
Теперь я не могу найти никакой информации о том, будут ли программы C очищать соединения MySQL после смерти.
Мы запускаемпрограмма со стандартным процессом подключения.
MYSQL *con = mysql_init(NULL);
if (con == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
exit(1);
}
if (mysql_real_connect(con, "localhost", "username", "password", "database", 0, NULL, 0) == NULL)
{
finish_with_error(con);
}
Для записи finish_with_error()
равно
void finish_with_error(MYSQL *con)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
В любом случае, скрипт обычно выполняется так, как задумано, и заканчивается на
mysql_close(con);
Таким образом, мой вопрос: если в какой-то момент происходит сбой программы между открытием соединения и его закрытием, будет ли соединение автоматически закрываться или оно будет оставаться открытым неограниченное время?