Выполните команду Linux в программе c - PullRequest
17 голосов
/ 21 января 2011

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

Ответы [ 3 ]

25 голосов
/ 21 января 2011

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

system("ls -lh >/dev/null 2>&1");
15 голосов
/ 26 июля 2014

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;
}
4 голосов
/ 21 января 2011

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

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

system ("ls");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...