如何在不占用终端的情况下使用终端执行我的代码

如何在不占用终端的情况下使用终端执行我的代码

伙计们,你们可能认为这是一个编码问题,但很有可能我不需要完全修改我的代码来解决这个问题。

所以我用 python 编写了一个无头(没有 GUI)音乐播放器,我现在像这样执行它: python3 main.py 我可以从程序内部暂停/取消暂停正在运行的曲目。但是终端被占用了,我必须让这个额外的终端在我做任何事情时保持打开状态,这有点困扰我。

我现在如何与我的程序交互: 终端已被占用,所以我应该终止我的程序来释放它

:~$python3 main.py
playing track0.mp3: pause 
paused track0.mp3: quit
:~$ls #I terminated the program so I could do this in currently running terminal

我想要如何与我的程序交互:终端没有被占用,所以我可以在其中运行其他东西。

:~$python3 main.py -init #It should not open the program in terminal
:~$ls #so I can do this while the music is playing
:~$python3 main.py pause #and like this I pause the program
:~$nano ~/.bashrc #and again I can use my terminal 
:~$python3 main.py quit #and like this I terminate my program

我知道这是有可能的,但我不知道该怎么做。

编辑:有人说你应该发布你的代码,这样我们就可以帮助你:https://github.com/yolowex/odd-musicplayer

答案1

您应该意识到 Linux 终端 (bash) 具有多任务处理能力,因此终端永远不会真正“被占用”。默认情况下,您可以使用Ctrl+ Z(发送stty susp)暂停正在运行的程序。

但在后台运行脚本会更简单。

python3 main.py &

然后,您可以使用fg命令将其置于前景焦点。这是基本的作业控制

如果您还想运行该脚本,以使其不附加到当前终端(并且在关闭时不会退出),请使用以下命令nohup

nohup python3 main.py &

相关内容