
1. 依赖文件未正确打包:如果编译的exe文件所依赖的dll、so等文件未正确打包,运行时就会出现闪退的情况。此时需要检查工程文件里是否有没有打包进去的文件,或者重新编译并确保所有依赖文件都被正确打包。
2. 兼容性问题:Perl编译出的exe程序在某些Windows系统版本中可能无法正常运行,例如32位应用在64位系统上运行可能会闪退。此时可以尝试使用其他系统版本进行测试,或者选择更换开发工具。
3. 远程调用未能正确返回:当Perl编译的exe程序和其他程序/服务进行远程通信时,可能遇到通信异常导致程序闪退。可以尝试检查远程调用代码和通信协议是否正确,并优化代码以提高程序的稳定性。
4. 编程错误:有时也可能是代码本身存在问题导致程序闪退。此时可以根据程序运行的日志信息,通过调试工具或手动调试来定位错误并解决问题。
总之,在Perl编译的exe程序闪退时需要认真探究问题的根本原因,基于不同的情况采取不同的解决方法。建议尽可能详细地记录下程序闪退时的表现和信息,以便更快地排查问题。
给两个思路,第一个就是每个生成的子进程的pid都保存在主进程里面,例如保存在数组里。然后,在load数据之前,用kill函数将0号信号发送给每个子进程。kill函数的0号信号不会发送真正的信号,只是测试能否向某个进程发送信号。这样,如果每个子进程都已经退出,那么对每个子进程进行kill 0都会得到假值,这样就可以load你的数据了。
第二个是思路是,设置一个全局变量,CHLD信号收割子进程时,每捕获一次便将全局变量加1。这时主进程就只要记录生成的子进程的个数,这样在load时判断全局变量与子进程的个数是否相等,若相等就代表子进程已经退出完毕了。当然,这种方法不会很保险,有可能两个或以上的子进程同时被收割,但全局变量只加了1,这样就会造成全局变量与子进程数永远都不相等而造成程序无限挂起……
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)