execl - 现在没有可用于程序的内存(OS X / XCode / C ++)

时间:2012-03-28 14:44:54

标签: c++ xcode macos

我正在尝试执行一个运行“ls”命令的非常简单的程序 我在Mac OS 10.7下工作,使用XCode和C ++ 这是代码:

#include <iostream>
using namespace std;

int main(void)
{
    cout << "Hello world" << endl;
    execl("/bin/ls","ls",NULL);
    return 0;
}

在输出

后崩溃
  

Hello world

     

现在没有可用于程序的内存:调用malloc不安全

我试着谷歌但没有运气,对我可能做错的任何想法?

3 个答案:

答案 0 :(得分:2)

这只是“我的意见”

从手册页:

  

exec系列函数用a替换当前过程映像        新的过程形象。

可能是它试图替换调试器进程并因此崩溃(应用程序从Xcode运行..)。如果从命令行执行应用程序,它可以正常工作......

答案 1 :(得分:0)

似乎工作正常:

http://ideone.com/8AoZ3

但似乎在你的平台上发生了某种奇怪的递归。你能把你的电话换成:

execl("/bin/ls","/bin/ls",0);

答案 2 :(得分:0)

我知道这可能不是您想要做的,但以下SO问题是使用execv来执行echo

how-to-create-a-process-on-mac-os-using-fork-and-exec