名为= program.c的程序的一部分
int memoryPercent()
{
int memoryPercent=0;
FILE *pipe1 = NULL;
pipe1=popen("/home/jatin/scripts/memoryPercent.sh","r");
if(!pipe1)
{
snmp_log(LOG_ERR,"popen failed in temp(),errno:%d\n",errno);
return -1;
}
if( fscanf(pipe1,"%d",&memoryPercent) != 1)
{
snmp_log(LOG_ERR,"fscanf failed in temp fun(),errno:\n");
return -2;
}
pclose(pipe1);
return memoryPercent;
}
上面是我的呼叫代码/home/jatin/scripts/memoryPercent.sh
在该位置上,将给出一个脚本,并且该脚本将返回一个INTEGER值。
在UBUNTU 12.04中,当我编译并执行此代码时,它运行良好。
但是在我的VM-WARE中
我已经在/ var / snmp3位置复制了所有必需的依赖项,并使用CHROOT执行此二进制文件,语法为
/usr/sbin/chroot /var/snmp3/ /usr/local/bin/program
它只显示值“ -1”!
谁能告诉我我在想什么?
脚本位于
/var/snmp3/home/jatin/scripts/memoryPercent.sh
中的相同位置以及775模式下的
/home/jatin/scripts/memoryPercent.sh
。 最佳答案
尝试从chroot的shell手动运行脚本。
我认为您缺少memoryPercent.sh使用的外壳。您是否已将外壳复制到chroot环境?