Ответ 1
Поскольку вызов system() использует оболочку для выполнения команды, вы можете перенаправить stdout и stderr в /dev/null, например.
system("ls -lh >/dev/null 2>&1");
Я пытаюсь выполнить команду Linux в c-программе, используя системный системный вызов, но не хочу, чтобы он удалял выходные или журналы ошибок на терминале. Что мне делать? Есть ли другой способ сделать это?
Поскольку вызов system() использует оболочку для выполнения команды, вы можете перенаправить stdout и stderr в /dev/null, например.
system("ls -lh >/dev/null 2>&1");
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;
}
Показать код.
Попробуйте, например:
Система ( "LS" );