#include #include #include #include #include #include #include #include #include static int terminated = 0; static int ready = 0; static void ignore_handler(int useless) { /* Nothing! */ } static void *thread(void *data) { MYSQL mysql; MYSQL_RES *mysqlres; int i; int old_errno = 0; #if 1 struct sigaction catchsig; memset(&catchsig, 0, sizeof(catchsig)); catchsig.sa_handler = ignore_handler; if (sigaction(SIGUSR1, &catchsig, NULL) == -1) { fprintf(stderr,"sigaction error"); terminated = 1; return NULL; } ready = 1; #endif /* Cycle for connecting to server */ for (i=0; i<1000; i++) { mysql_init(&mysql); /* Set timeout */ /* When 0 (indefinetely), mysql will use blocking mode on socket, when non-zero non-blocking mode is used */ mysql.options.connect_timeout = 1; /* Remember old errno */ old_errno = errno; /* Connect to server */ if (!mysql_real_connect(&mysql, "192.168.0.7", "xgw_casa1", "po9choot1uas0Cho", "xgw_casa1", 3306, NULL, 0)) { fprintf(stderr, "i=%i errno=%i old_errno=%i mysql_error=%s\n", i, errno, old_errno, mysql_error(&mysql)); terminated = 1; pthread_exit(NULL); return NULL; } mysql_close(&mysql); } terminated = 1; pthread_exit(NULL); return NULL; } int main(void) { pthread_t t; fprintf(stderr, "Running main()\n"); /* Start thread */ pthread_create(&t, NULL, thread, NULL); /* Send signals */ while(!terminated) { if (ready) pthread_kill(t, SIGUSR1); usleep(1); } fprintf(stderr, "Ending main()\n"); return 0; }