不删除文件时的分段错误C ++

时间:2014-02-24 02:06:17

标签: c++ shell ubuntu segmentation-fault system

我有一个用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 ....只是检查了旧脚本导致你的评论)

嗯....但无论如何问题还在继续,但现在我不仅知道它有“系统”功能。

0 个答案:

没有答案