Выполнить команду Linux в программе c

Я пытаюсь выполнить команду Linux в c-программе, используя системный системный вызов, но не хочу, чтобы он удалял выходные или журналы ошибок на терминале. Что мне делать? Есть ли другой способ сделать это?

Ответы

Ответ 1

Поскольку вызов system() использует оболочку для выполнения команды, вы можете перенаправить stdout и stderr в /dev/null, например.

system("ls -lh >/dev/null 2>&1");

Ответ 2

popen - это еще один способ, которым вы можете сделать то же самое:

void get_popen()
    FILE *pf;
    char command[20];
    char data[512];

    // Execute a process listing
    sprintf(command, "ps aux wwwf"); 

    // Setup our pipe for reading and execute our command.
    pf = popen(command,"r"); 

    // Error handling

    // Get the data from the process execution
    fgets(data, 512 , pf);

    // the data is now in 'data'

    if (pclose(pf) != 0)
        fprintf(stderr," Error: Failed to close command stream \n");

    return;
}

Ответ 3

Показать код.

Попробуйте, например:

Система ( "LS" );