免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3363 | 回复: 8
打印 上一主题 下一主题

[学习] 程序内部调用system执行sqlldr卡死 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-06 17:21 |只看该作者 |倒序浏览
几年前的老的PC程序,现在改了一个小逻辑重新编译之后就跑不通了,卡在sqlldr执行的地方几天没反应。测试发现文件数据只有几条的时候能执行,上了几千条就不能执行了。相关代码是:
char v_Command[1000] = "\0";
sprintf( v_Command,"sqlldr userid=%s control=%s log=%s readsize=6553600 bindsize=6553600 silent=header,feedback direct = false",g_struConn.g_DbStr,g_log_FileInfor[i].file_name,v_Log_File );
if ( system(v_Command)!=0 )
……

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
2 [报告]
发表于 2014-01-07 08:28 |只看该作者
单执行 sqlldr 会怎样?

论坛徽章:
0
3 [报告]
发表于 2014-01-07 09:52 |只看该作者
回复 2# openspace


单独执行sqlldr正常,1W条1秒就导完了。最新测试结果是文件记录在几十条的时候程序能正常运行通sqlldr正常,上了几千条就要卡起。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
4 [报告]
发表于 2014-01-07 10:10 |只看该作者
把system替换成exec执行正常吗?

论坛徽章:
0
5 [报告]
发表于 2014-01-08 10:09 |只看该作者
回复 4# openspace


用execlp能正确执行了

论坛徽章:
0
6 [报告]
发表于 2014-01-08 10:52 |只看该作者
回复 4# openspace


    改成fork+execlp又卡了,卡在fork这里,fork为什么会卡呢

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
7 [报告]
发表于 2014-01-08 11:02 |只看该作者
可以这样试一下
主进程 fork
然后子进程再 fork
再 fork 出来的子进程来执行这个程序
看看之前的 fork 有没有卡住

论坛徽章:
0
8 [报告]
发表于 2014-01-08 11:20 |只看该作者
回复 7# openspace

注释掉execlp及相关的处理,仅仅是fork后printf信息,也是无反应


   

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
9 [报告]
发表于 2014-01-08 12:40 |只看该作者
回复 8# juboosnov


    普通的 fork 都不行了?
    进程数量有限制?该一下系统上限试试
     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP