0

名为 =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 模式和775 模式下位于同一位置/home/jatin/scripts/memoryPercent.sh....

4

1 回答 1

0

尝试从 chrooted shell 手动运行脚本。

我认为您缺少 memoryPercent.sh 使用的外壳。您是否已将 shell 复制到 chrooted 环境?

于 2012-10-03T12:37:33.037 回答