Я пытаюсь выполнить команду 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" );