我有一个用C ++编写的程序,它使用很多“系统”函数来运行我在Shell中运行的东西(使用Ubuntu 12.04 32位)。
“system”函数中完成的操作会生成几个要处理的文件。在程序的第二部分,我处理这些文件。
当程序结束时,它不会删除由“系统”函数生成的那些文件。
当我第一次运行程序时,它运行正常,当我第二次运行时,它在第二部分的给定循环中给出了分段错误(核心转储)。每次尝试运行时它都会减少迭代次数。例如:首次运行 =运行正常。 第二次运行 =迭代200中的分段错误(核心转储)。第三次运行 =迭代中的分段错误(核心转储)199。继续......
我解决了在程序的每次“运行”结束时删除“system”函数生成的所有文件的问题。
我的问题是...... 任何人都知道为什么会发生这种情况?
编辑*
下面是一些伪代码示例.....很遗憾我不能把整个代码,就像600行一样。
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);
}
第二轮我看到“我”直到200 ......第三轮我看到“我”直到199 ....然后继续...这就是我检查它给分段核心的方式(倾倒)。
修改*
我现在很惭愧,只是检查了在程序之前生成文件的旧脚本,它给出了同样的问题....如果我在一个单独的文件中生成然后只运行“processFiles() “在程序中,它给出了同样的错误。旧脚本最后有一个“rm files”命令,并不关心。 (对于用户@beta ....只是检查了旧脚本导致你的评论)
嗯....但无论如何问题还在继续,但现在我不仅知道它有“系统”功能。