reer 2009年12月04日
多进程的问题,关闭进程时总会有一两个进程卡死,卡在sqlite3_close()那里
多进程的问题,关闭进程时总会有一两个进程卡死

多进程的程序,用到了sqlite3。

关闭时,使用自定义信号SIGUSR2来传送关闭信号,并在信号处理函数里关闭数据库。

问题是,使用“kill -12 主进程id”来关闭子进程和主进程的过程中,总会有一两个进程最后会卡死,并总是会在关闭数据库那里卡住,不知道是怎么回事?


进程的相关代码如下:
int main ()
{
...
signal (SIGUSR2, (void*)sig_handler);
...
}

void sig_handler(int sig)
{
...
switch(sig)
{
case SIGUSR2:
...
printf ( "# stop --------------- 01 \n ");
sqlite3_interrupt (db);
sqlite3_close (db); // 在这里卡死
printf ( "# stop --------------- 02 \n ");
...
}
...
}

对了,具体到代码里就是会执行“printf ( "# stop --------------- 01 \n ");”
但不执行“printf ( "# stop --------------- 02 \n ");”
...全文
109 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
其他数据库
创建于2007-09-28

1925

社区成员

9511

社区内容

其他数据库开发 其他数据库
社区公告
暂无公告