据我所知,在Mac OS X上,守护进程是在后台运行的(与Windows服务相同)。我可以通过说用Java编写的dameon被认为是JVM来建立守护进程之间的连接吗?我读了一些人们提到的关于守护程序线程和jvm线程的内容,它们是如何相关的?
答案 0 :(得分:1)
没有。 JVM - Java虚拟机 - 是运行java程序的可执行文件。 守护程序是在没有连接到特定终端的情况下运行的任何程序,例如,oh,launchd。
因此,请考虑从命令行运行java程序:jar文件是myapp.jar并键入
$ java -jar myapp.jar
在路径/usr/bin/java
处启动可执行程序,这只是一个常规程序。它恰好是包含java指令解释器的一个,“java 虚拟机”。它运行并模拟特殊的抽象java机器,并运行直到java程序的所有正常线程终止。然后它返回一个返回码并结束。由于这个java进程是由shell启动的,所以它是shell的子程序,并且shell会返回一个通知它已完成。
现在,可以编写一个程序,例如在C中,创建一个不归shell所有的进程;其父级成为进程ID为1的进程,在大多数UNIX系统上称为 init(1),在Mac OS / X上称为 launchd 。 PID 1拥有的进程一直运行,直到它被shutdown命令停止,或者它自行终止(或崩溃。)
在希腊神话中超人类的精神之后,这些过程被称为守护进程。他们被称为是因为(a)这是一个可爱的名字; (b)与常规用户计划相比,他们具有“超自然力量”; (c)旧时黑客喜欢可爱的名字。