Puncte:1

Cum îmi execut codul folosind terminalul fără ca terminalul să fie ocupat

drapel sh

Băieți, ați putea crede că aceasta este o problemă de codificare, dar există o posibilitate puternică ca să nu fie nevoie să-mi modific complet codul pentru a rezolva această problemă.

Așa că am scris un player de muzică fără cap (fără GUI) folosind python și în prezent îl execut astfel: python3 main.py Pot întrerupe/anula pauza piesa de rulare din interiorul programului. dar terminalul este ocupat, trebuie să las acest terminal suplimentar să rămână deschis în timp ce fac orice fac și mă cam deranjează.

Cum interacționez acum cu programul meu: terminalul este ocupat, așa că ar trebui să-mi închei programul pentru a-l elibera

:~$python3 main.py
redare piesa0.mp3: pauză 
piesa întreruptă0.mp3: ieși
:~$ls #Am terminat programul ca să pot face asta în terminalul care rulează în prezent

Cum vreau să interacționez cu programul meu: terminalul NU este ocupat, așa că pot rula alte lucruri în el.

:~$python3 main.py -init #Nu ar trebui să deschidă programul în terminal
:~$ls #ca să pot face asta în timp ce se aude muzica
:~$python3 main.py pauză #și astfel întrerup programul
:~$nano ~/.bashrc #și din nou îmi pot folosi terminalul 
:~$python3 main.py iese #și așa îmi închei programul

Știu că este posibil, pur și simplu nu știu cum.

Editați | ×: O persoană a spus că ar trebui să vă publicați codul, astfel încât să vă putem ajuta asa de : https://github.com/yolowex/odd-musicplayer

YoloWex avatar
drapel sh
Ai dreptate . Adaug codul sursă la git-ul meu.
raj avatar
drapel cn
raj
Puteți încerca să rulați programul în `screen`, apoi detașați sesiunea `screen` (Ctrl-A apoi D). Ori de câte ori doriți să reveniți la programul dvs., puteți reatașa sesiunea `screen` (`screen -r`). Sau pur și simplu deschideți două ferestre „ecran” și comutați între ele.Verificați manualul `screen`: https://linux.die.net/man/1/screen
Puncte:3
drapel vn

Ar trebui să vă dați seama că terminalul Linux (bash) este capabil de multitasking, astfel încât terminalul nu este niciodată cu adevărat „ocupat”. În mod implicit, puteți suspenda un program care rulează cu Ctrl + Z (trimitere stty susp).

Dar poate fi și mai simplu să rulezi scriptul în fundal.

python3 main.py &

Puteți apoi să îi acordați focalizarea în prim-plan cu ajutorul fg comanda. Acest lucru este de bază controlul locului de muncă.

Dacă, în plus, doriți să rulați scriptul astfel încât să nu fie atașat la terminalul curent (și să nu iasă când îl închideți), utilizați nohup comanda:

nohup python3 main.py &
YoloWex avatar
drapel sh
Am încercat &/renegat și nohup, dar niciunul nu pare să funcționeze. nu se intampla exact nimic. Cred că acest lucru se datorează faptului că codul meu include comenzi de intrare și un fir, așa că este puțin complicat. pentru a ieși din program în mod corespunzător, chiar a trebuit să folosesc thread.daemon, astfel încât firul este ucis după terminarea programului. Am încercat și ```Ctrl```+```Z```
Artur Meinild avatar
drapel vn
Ok, în acest caz [deci] este locul potrivit pentru a întreba.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.