c代码popen错误“只能在虚拟机中运行时才能分配内存”

时间:2014-05-21 20:19:22

标签: c virtual-machine

我使用c编写了一个程序,我使用popen打开管道并执行命令行。 这个程序在主机上工作正常,但是当我在vbox,ubuntu12.04中运行程序时,错误:无法分配显示的内存。

我的代码是:

FILE *fp;
char path[100];
  /* Open the command for reading. */
  fp = popen(pdpcall, "r");
  if (fp == NULL) {
      printf("Error opening pipe pdpcall: %s\n",strerror(errno));
      pclose(fp);
    exit(0);
  }
  /* Read the output a line at a time - output it. */
  while (fgets(path, sizeof(path)-1, fp) != NULL) {
    if(strncmp(decision,path,strlen(decision))==0)
    {
        pclose(fp);
        return 1;
    }

我也试过一个测试程序只在VM中有popen,它工作正常。但是不能在我的程序中工作。

我想原因是在我的程序中,我使用了很多malloc,并且可能不会自由。 Vbox中的内存小于主机,因此存在内存错误。 但我将vbox内存从512m更改为2G,它仍然是相同的错误。 VM中是否还有其他问题。如何解决这个问题。

0 个答案:

没有答案