在我的Python应用程序中,我有一个使用cmd模块的命令提示符。我还有一个在后台运行的线程,它偶尔会在需要时打印消息。然而,这会导致冲突。消息将打印在用户通常会输入命令的位置。例如,应用程序通常会以提示符启动(在我的示例中,是$)。当后台线程打印一条消息时,它会在提示符后打印出来,给我们留下类似这样的结果:
$ This is a test m
我通常使用read命令逐行将输入文件读入shell脚本。如果在输入文件blah.txt的最后一行末尾没有插入新行,则下面这样的示例代码会产生错误的结果。 #!sh
dodone <blah.txt 因此,如果输入文件读取如下内容- One Three
Four 并且我没有在四次之后按回车键,脚本无法读取最后一行,并打印 One
我对守护进程线程的了解是,如果没有用户线程在运行,并且所有剩余的线程都是守护进程类型,那么JVM将退出。当我运行下面的程序时,我总是看到输出“主线程结束”作为第一行,并打印"Hello from Worker 0“,依此类推,直到更多的行”。我的问题是,如果工作线程被设置为守护进程,那么当主线程结束时,工作线程应该会死,不会继续,但仍然