本人些了一个小的程序,在unix下面用的多线程,其中一个线程,函数如下:
void* child3(void* arg)
{
        printf("pthread----------------------3\n");
        memset(TT,0,MAX_MSG);
        sprintf(TT,"select   ser_ip,ser_port,file_name_1,file_name_2,start_time,end_time,state_bit from streaminfo where series_num ='%08x%08x'",*(int*)recvdata->packInfo.id.series_num, *(int*)(recvdata->packInfo.id.series_num+4));
        if (mysql_query(&mysql_conn,TT) == 0)
                printf("select from the database2 succeed.\n");
        else
                for(;;)
                {
                        printf("select from the database2 failured!!!!!!!!!!!!!!!!!!!!!\n");
                        printf("trying to connect database2........\n");
                        //mysql_init(&mysql_conn);
                        //mysql_real_connect(&mysql_conn,"localhost","root","mitsubishi","test_db_1",MYSQL_PORT,NULL,0);
                        //sleep(1);
                        printf("sleep ended---------------\n");
                        if( mysql_query(&mysql_conn,TT) == 0 )
                        {
                                printf("the function is execled.\n");
                                break;
                        }
                        else
                        {
                                printf("try execute the function again.\n");
                                continue;
                        }
                }        mysql_result = mysql_store_result(&mysql_conn);
        mysql_row = mysql_fetch_row(mysql_result);
        tim1 = atoi(mysql_row[4]);
        tim2 = atoi(mysql_row[5]);
        printf("tim2 = %d\n",tim2);
        tim = time(NULL);
        if ((tim >= tim1) && (tim < tim2) && (atoi(mysql_row[6]) == 0))
        {
             ss_2.server_ip = htonl(inet_addr(mysql_row[0]));
             ss_2.server_port = (unsigned int)atoi(mysql_row[1]);
             memcpy(ss_2.file_name_1,mysql_row[2],sizeof(ss_2.file_name_1));
.....
}
其中的mysql_query(&mysql_conn,TT);函数,运行一段时间以后,总 是不能正常运行(返回值!=0),由于是应用程序,本人希望能 再运行一下mysql_query(&mysql_conn,TT)这个函数,可是,却不能运行,情 高手指点下,这是怎么回事

解决方案 »

  1.   

    void* child3(void* arg)
    {
            printf("pthread----------------------3\n");
            memset(TT,0,MAX_MSG);
            sprintf(TT,"select   ser_ip,ser_port,file_name_1,file_name_2,start_time,end_time,state_bit from streaminfo where series_num ='%08x%08x'",*(int*)recvdata->packInfo.id.series_num, *(int*)(recvdata->packInfo.id.series_num+4));
      ******      if (mysql_query(&mysql_conn,TT) == 0)//就是这里,有的时候运行起来,返回值不是0,为了程序能正常运行,所以,我在下面些了 else里面的 程序,希望可以解决,谁知道,到下面都 运行不起来这个函数了,情指点下
                    printf("select from the database2 succeed.\n");
            else
                    for(;;)
                    {
                            printf("select from the database2 failured!!!!!!!!!!!!!!!!!!!!!\n");
                            printf("trying to connect database2........\n");
                            //mysql_init(&mysql_conn);
                            //mysql_real_connect(&mysql_conn,"localhost","root","mitsubishi","test_db_1",MYSQL_PORT,NULL,0);
                            //sleep(1);
                            printf("sleep ended---------------\n");
                            if( mysql_query(&mysql_conn,TT) == 0 )
                            {
                                    printf("the function is execled.\n");
                                    break;
                            }
                            else
                            {
                                    printf("try execute the function again.\n");
                                    continue;
                            }
                    }