不删除文件时出现分段错误C++; 我有一个用C++编写的程序,它使用了很多“系统”函数来运行我在shell中运行的东西(使用Ubuntu 12.04 32位)。
在“系统”函数中完成的操作将生成几个将被处理的文件。在程序的第二部分,我处理这些文件 当程序结束时,它不会删除那些由“系统”函数生成的文件 当我第一次运行程序时,它运行良好,当我第二次运行时,它在第二部分的给定循环中给我分段错误(内核转储)。每次我尝试运行时,它的迭代次数较少。例如:第一次跑步=跑得很好第二次运行=迭代200中的分段错误(堆芯转储)第三次运行=迭代199中的分段错误(堆芯转储)。然后继续 我解决了在程序每次“运行”结束时删除“系统”函数生成的所有文件的问题 我的问题是……有人知道为什么会发生这种事吗 编辑* 下面是一些伪代码的例子…不幸的是我不能把整个代码,它像600行不删除文件时出现分段错误C++; 我有一个用C++编写的程序,它使用了很多“系统”函数来运行我在shell中运行的东西(使用Ubuntu 12.04 32位)。,c++,shell,ubuntu,segmentation-fault,system,C++,Shell,Ubuntu,Segmentation Fault,System,在“系统”函数中完成的操作将生成几个将被处理的文件。在程序的第二部分,我处理这些文件 当程序结束时,它不会删除那些由“系统”函数生成的文件 当我第一次运行程序时,它运行良好,当我第二次运行时,它在第二部分的给定循环中给我分段错误(内核转储)。每次我尝试运行时,它的迭代次数较少。例如:第一次跑步=跑得很好第二次运行=迭代200中的分段错误(堆芯转储)第三次运行=迭代199中的分段错误(堆芯转储)。然后继续 我解决了在程序每次“运行”结束时删除“系统”函数生成的所有文件的问题 我的问题是……有人知道
int main(void){
// Part 1 of the program.....severam "system" producing files
system("bash produceSeveralFiles.sh");
// Part 2 of the program......process files produced in part 1
processFiles();
// My Solution that i dont know why solves it
system("rm AllFiles");
return 0;
}
编辑*
我检查过它直到循环
for(int i = 0; i < 300 ; i++){
printf("\n%d",i);
...//a few code here
printf("\n%d",i);
}
for(int i=0;i<300;i++){
printf(“\n%d”,i);
…//这里有一些代码
printf(“\n%d”,i);
}
第二次运行我看到“i”一直到200…第三次运行我看到“i”一直到199…然后继续…这就是我检查分段核心(转储)的方式
编辑*
哦,我现在很惭愧,只是检查了在程序之前生成文件的旧脚本,它给出了相同的问题……如果我在单独的文件中生成,然后只在程序中运行“processFiles()”,它给出了相同的错误。旧的脚本最后有一个“rm files”命令,这并不重要。(thx to user@beta…刚刚检查了旧脚本以引起您的评论)
嗯……但无论如何,问题还在继续,但现在我知道这不仅仅是“系统”功能。不是没有源代码。您使用core来查看哪行代码seg出现故障?第二次运行如何更改文件?如果在命令行上执行
produceSeverfiles.sh
,会导致错误吗?如果没有,请从程序中删除该调用,并让程序运行processFiles()
,然后查看是否导致错误。只要这么多,搜索空间就会减少一半;这很不清楚,但听起来好像您已经验证了该循环中的processFiles()
中发生了segfault。好的现在,简化代码,直到您发现错误,或者找到可以发布的错误。-->如果在命令行上执行produceSeverFiles.sh,会不会导致错误?