Мне нужна помощь относительно контроля работы в Linux.
Я запускаю свою программу из терминала, как это
$ ./test.elf &
Моя программа / процесс запускается как фоновый процесс.
Через некоторое время (скажем, 5 секунд) я набираю fg
, чтобы поставить мой процесс на передний план.
Через некоторое время (скажем, 5 секунд) я хочу, чтобы моя программа вернулась к фоновому процессу и поместила программу bash в качестве процесса переднего плана, чтобы я могла продолжить использовать терминал.
Вот что я делаю:
- При запуске моей программы я получаю идентификатор группового процесса переднего плана (программы bash), используя функцию
tcgetpgrp
.
- Затем я подожду, пока мой процесс не станет приоритетным. Я использую
tcgetpgrp(STDIN__FILENO)
.
- Я тогда жду ~ 5 секунд
- Используя
tcsetpgrp
, я поставил процесс, который я получил в пункте 1 выше, на передний план.
Проблема в том, что я вижу, что мой процесс находится на заднем плане, а программа bash на переднем плане, но я не могу ввести команду в терминале. Баш не «возвращается», он все еще ждет или спит.
Я знаю, что могу нажать Ctrl - z , а затем bg
, но я не хочу использовать это, потому что после Ctrl - z нажата, мой процесс остановлен, и это не хорошо, потому что я запускаю управляющее приложение в режиме реального времени. Поэтому я хочу немедленно вернуться к терминалу, не останавливая и не останавливая мою программу.
Извините, если мое описание моей проблемы кажется запутанным.
Есть комментарии?