0

私は C のアマチュアであり、C で文字列を操作するのに問題があります。目的は、電流pidをベース文字列に追加し、それを で呼び出すことsystem(system_call)です。私は次のものを持っています:

char system_call[100] = "top -p "
char pid_string[30];

//quite a bit of other code

int main(int argc, char *argv[])
{
    pid_t pid = getpid();
    sprintf(pid_string,"%d",pid);
    strcat(system_call,pid_string);

    printf(system_call); //prints what I expect; something like 'top -p 5580'
    system(system_call); //doesn't work
}

呼び出しはsystem単純にsh: system: not found. C が得意な人はすぐに問題を理解できると思います。C の文字列の後の末尾の 0 に何か関係があるのではないかと思いましたが、C があまりにもひどいので、それを認識したり、どうすればよいかわかりません。私も試しsystem("%s",system_call)ましたが、system1つの引数しか取りません。メモリ割り当てに何か問題がありますか? どんな洞察も高く評価されます。

4

2 に答える 2

2

文字列の構築に問題が見られません。問題は、システムで何らかの理由で「システム」自体が機能しないことです:-)、または「トップ」にアクセスできない可能性があります

于 2013-04-10T21:37:56.127 に答える
2

変数 pid には、sprintf で使用する前に値が与えられません。

于 2013-04-10T21:32:34.777 に答える