我使用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中是否还有其他问题。如何解决这个问题。