我得到一个非常奇怪的错误,我无法绕过头。
这是我的代码,很简单,我只是在main函数中调用一个函数System()
string function1()
{
cout << "Running my script... " << endl;
system ("./myscript.sh");
cout << "Done Running my script... " << endl;
}
int main()
{
cout << "running function" << endl;
function1();
cout <<"done"<< endl;
return 0;
}
它运行的脚本什么都不做(为了简化问题),它只是回应
#!/bin/bash
#UnMount Script
echo "HELLO THERE"
事情是,一旦它退出Function(),就会立即产生分段错误!
这是我的输出:
running function
Running my script...
HELLO THERE
Segmentation fault (core dumped)
我一无所知,造成这种情况的原因是什么??
答案 0 :(得分:8)
看起来问题是您的function1
被声明为返回string
,但它不会返回任何内容。 C ++编译器应该发出警告:
warning: control reaches end of non-void function [-Wreturn-type]
当函数返回时,调用者需要对函数返回的字符串执行清理操作。由于您没有返回任何内容,因此这些操作会触发未定义的行为,最终导致分段错误。
添加一个return语句或将该函数声明为void
将解决问题。