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」のみを表示しています!! 誰かが私が欠けているものを教えてもらえますか?

スクリプトは、775モードと同じ場所にあります/var/snmp3/home/jatin/scripts/memoryPercent.sh/home/jatin/scripts/memoryPercent.sh

4

1 に答える 1

0

chrootされたシェルから手動でスクリプトを実行してみてください。

memoryPercent.shで使用されているシェルが不足していると思います。シェルをchrootされた環境にコピーしましたか?

于 2012-10-03T12:37:33.037 に答える