Мне нужно запустить программу в фоновом режиме. Загвоздка в том, что программа выполняет вызов tcsetattr() и устанавливает необработанный режим следующим образом:
struct termios tio;
if (tcgetattr(fileno(stdin), &tio) == -1) {
perror("tcgetattr");
return;
}
_saved_tio = tio;
tio.c_iflag |= IGNPAR;
tio.c_iflag &= ~(ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXANY | IXOFF);
tio.c_lflag &= ~(ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHONL);
// #ifdef IEXTEN
tio.c_lflag &= ~IEXTEN;
// #endif
tio.c_oflag &= ~OPOST;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 0;
if (tcsetattr(fileno(stdin), TCSADRAIN, &tio) == -1)
perror("tcsetattr");
else
_in_raw_mode = 1;
Подразумевается, что как только я запускаю свою программу с помощью «&» и нажимаю клавишу ввода, процесс показывает «остановлен». Даже выход ps aux показывает «T» как состояние процесса, что означает, что он не запущен. Как я могу заставить эту программу работать в фоновом режиме. Проблема в том, что я не могу изменить эту программу.
Для получения полной информации, на самом деле мне нужно использовать ipmitool с «sol» в качестве фонового процесса.
Любая помощь приветствуется! Спасибо