程序需求是不断连接数据库,并断开,再连接,反复循环。
于是写了个死循环。。。。死循环总是鬼畜的~
而数据库的连接由于某种鬼畜的原因,不能用jdbc,odbc等api,只能使用linux命令连接,不做深究。
然后本菜鸡写了一个如下的程序。
#define THREAD_NUM 101
void GetProcessId(char* str)
{
system("mysql -utest -ptest -P33001 -h172.17.xxx.xxx>>connect.res");//ip随意
}
void KillConnect()
{
system("kill -9 $(ps -ef|grep utest|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')");
}
int main()
{
while(1){
pthread_t thread_arr[THREAD_NUM];
int i=0;
pthread_create(&thread_arr[i],NULL,(void *)KillConnect,NULL);
for(i=1;i<THREAD_NUM;i++)
{
pthread_create(&thread_arr[i],NULL,(void *)GetProcessId,NULL);
}
}
return 0;
}
一些代码辣鸡之处不必深究,毕竟只是随便写写的,然后问题来了,在运行一段时间后,程序不死,不崩也不运行,查询进程状态为“无法中断的休眠状态”。
开了各种linux中进程线程的介绍,太多雷同,百度知道中这位大虾很好地解释了中断,然而我依然没联想到该程序的问题。
如果有知道答案的也希望不吝赐教~~
在此做个记录。