Странное поведение с командой bg

Как отправить процесс (приложение) в фоновый режим, если он всегда ожидает ввода на терминал и все время отправляет полученные данные из uart в stdout?

Я не могу отправить свое приложение на фон с помощью CTRL + Z & bg% number / bg %%.

Любая идея, что не так?

Мое устройство (программа) ожидает некоторых команд ввода из терминала для конфигурации, прежде чем оно будет отправлено на задний план. И я получаю ошибку при попытке отправить ее на задний план.

# [CTRL-Z] [1]+ Stopped sudo ./my_app # bg %1 

и он показывает мне что-то вроде этого:

 [1]+ Stopped sudo ./my_app 

  • Как найти, какие процессы выполняются пользователем прямо сейчас?
  • Через системы, Как процесс взаимодействует с другим процессом?
  • Как убить процесс, выполняемый в определенном скрипте
  • Один экземпляр скрипта, но только с одинаковыми аргументами
  • Как установить идентификатор для нескольких фоновых процессов?
  • Как безопасно выйти из журнала, который занимает 75% моего процессора в течение нескольких часов?
  • Поиск PID процесса с использованием определенного порта?
  • Как убить два или несколько процессов с помощью одной команды kill?
  • 3 Solutions collect form web for “Странное поведение с командой bg”

    Когда программа, работающая в фоновом режиме, пытается считывать с терминала, она останавливается сигналом SIGTTIN . В настоящее время вход идет на передний план¹; это было бы разрушительно, если бы случайный вход был отправлен в программу переднего плана или в фоновую программу. Таким образом, фоновая программа приостанавливается до тех пор, пока она не появится на переднем плане.

    Если вам нужно только передать данные в вашу программу в начале, проведите в нее данные.

     echo "config=foo" | ./my_app & 

    Если вам нужно время от времени взаимодействовать с программой, но она может выполняться без присмотра большую часть времени, запустите ее в терминальном мультиплексоре, таком как Screen или Tmux . Например, с экраном:

     screen -S my_app ./my_app 

    Введите необходимый ввод, затем нажмите Ctrl + A, чтобы отключить сеанс экрана, т.е. пусть он запустится в фоновом режиме и вернется к исходному терминалу. Когда вы хотите снова взаимодействовать с программой, подключитесь к сеансу экрана:

     screen -S my_app -rd 

    Если вам необходимо выполнить некоторые сложные взаимодействия автоматически, напишите сценарий ожидания (или скрипт на другом языке с аналогичной библиотекой).

    ¹ Process group, но я не собираюсь вдаваться в эту тонкость здесь.

    Если ваша команда продолжает читать из tty, вам нужно позвонить

    fg

    после того, как вы получите сообщение «остановлено», чтобы ввести ожидаемый ввод.

    Разве вы не должны передавать аргументы в stdin, потому что они продолжают работать? Если вы просто CTRL-Z, он будет ждать ввода в фоновом режиме.

    например

     $ cat test.sh #!/bin/bash read var echo $var $ cat <<EOF > input d EOF $ ./test.sh < input d $ ./test.sh <input > stdout 2> stderr & [2] 23180 [2]- Done ./test.sh < input > stdout 2> stderr $ cat stdout d 

    При попытке запустить его, не передавая вход:

     $ ./test.sh > stdout 2> stderr & [2] 13012 [2]+ Stopped ./test.sh > stdout 2> stderr 
    Interesting Posts

    Команда `ls` не отображает содержимое последней директории

    Можно добавить прокси после узла выхода TOR?

    Конфигурация сервера IPA: нельзя использовать IP-адрес сети

    Конкатенация столбцов при совпадении других полей

    Клиент Synology CloudStation Drive для Ubuntu не запускается

    Почему `at` предупреждает меня, что команды будут выполняться с помощью / bin / sh? Что делать, если я хочу другую оболочку?

    Настольная среда Gnome перестала работать в kali linux (на основе debian)

    SSH странное поведение входа – возможно, человек в средней атаке

    Почему «найти. -type f` займет больше времени, чем `find .`?

    Как отключить пользователя root на OpenBSD?

    Как я могу заставить компьютер запомнить кодовую фразу ключевого слова SSH между перезагрузками?

    Как я могу передать ssh на удаленный сервер с автоматическим паролем и без ключа?

    sudo -u git clone

    Как выполнять команды в пакетном режиме по ssh?

    Механизм шаблонов Text-файлов на лету

    Linux и Unix - лучшая ОС в мире.