0

Cプログラムでシェルコマンドを実行してstdout出力を取得したい。

私はこの関数でそれをしました:

int run_shell_cmd_nout(const char* cmd)
{
    FILE *fp;
    char out[4096]     = {0};
    char str[256]       = {0};
    char full_cmd[1024] = {0};
    int result = 0;

    // Compose full shell command
    if (!sprintf(full_cmd, "/system/bin/%s", cmd))
    {
        printf("Failed to compose full shell command\n");
        return -1;
    }

    // Open the command for reading.
    fp = popen(full_cmd, "r");
    if (fp == NULL)
    {
        printf("Failed to run command\n");
        return -1;
    }

    // Read the output a line at a time - output it.
    while(!feof(fp))
    {
         if(fgets(str, 256, fp) != NULL)
         {
             result = -1;
             strcat(out, str);
         }
    }

    pclose(fp);

    if (result != 0)
    {
        printf("%s\n", out);
        return -1;
    }

    return 0;
}

ただし、insmodでは機能しません。

insmodを呼び出すときにすべての出力をインターセプトする方法はありますか?

4

0 に答える 0