Рейтинг:1

Как выполнить мой код с помощью терминала, если терминал не занят

флаг sh

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

Итак, я написал безголовый (без графического интерфейса) музыкальный проигрыватель с использованием python, и в настоящее время я выполняю его следующим образом: python3 main.py Я могу приостановить/снять паузу с беговой дорожки внутри программы. но терминал занят, я должен позволить этому дополнительному терминалу оставаться открытым, пока я делаю то, что делаю, и это меня немного беспокоит.

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

:~$python3 main.py
воспроизведение track0.mp3: пауза 
приостановлено track0.mp3: выйти
:~$ls #я завершил программу, чтобы сделать это в запущенном в данный момент терминале

Как я хочу взаимодействовать со своей программой: терминал НЕ занят, поэтому я могу запускать в нем другие вещи.

:~$python3 main.py -init #Программа не должна открываться в терминале
:~$ls #так что я могу делать это, пока играет музыка
:~$python3 main.py pause #и вот так я приостанавливаю программу
:~$nano ~/.bashrc #и снова я могу использовать свой терминал 
:~$python3 main.py quit #и вот так я завершаю свою программу

Я знаю, что это возможно, просто не знаю, как.

Редактировать: Человек сказал, что вы должны опубликовать свой код, чтобы мы могли вам помочь так : https://github.com/yolowex/нечетный-музыкальный плеер

YoloWex avatar
флаг sh
Ты прав . Я добавляю исходный код в свой git.
raj avatar
флаг cn
raj
Вы можете попробовать запустить свою программу внутри `экрана`, а затем отключить сеанс `экрана` (Ctrl-A, затем D). Всякий раз, когда вы хотите вернуться к своей программе, вы можете повторно подключить сеанс `screen` (`screen -r`). Или просто откройте два «экранных» окна и переключайтесь между ними.Ознакомьтесь с руководством по экрану: https://linux.die.net/man/1/screen
Рейтинг:3
флаг vn

Вы должны понимать, что терминал Linux (bash) может работать в многозадачном режиме, поэтому терминал никогда не бывает «занят». По умолчанию вы можете приостановить работающую программу с помощью Ctrl + Z (отправка стти сусп).

Но может быть еще проще запустить скрипт в фоновом режиме.

python3 main.py &

Затем вы можете позже сфокусировать его на переднем плане с помощью фг команда. Это основное контроль работы.

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

nohup python3 main.py &
YoloWex avatar
флаг sh
Я пробовал & / disown и nohup, но ни один из них не работает. точно ничего не происходит. Я думаю, это потому, что мой код включает в себя команды ввода и поток, так что это немного сложно. чтобы правильно выйти из программы, мне даже нужно было использовать thread.daemon, чтобы поток убивался после завершения программы. Я также пробовал ```Ctrl```+```Z```
Artur Meinild avatar
флаг vn
Хорошо, в таком случае [так] — правильное место, чтобы спросить.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.