從我能理解的情況來看,在Mac OS X上,守護進程是在後臺運行的東西(與Windows服務相同)。我可以通過說用Java編寫的dameon被認爲是JVM來建立守護進程之間的連接嗎?我讀了一些人們提到的關於守護線程和jvm線程的地方,他們是如何相關的?Mac OS X - 守護進程和jvm之間的關係
回答
編號JVM - Java虛擬機 - 是運行您的Java程序的可執行文件。 A 守護進程是沒有連接到特定終端而運行的任何程序,例如,哦,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上啓動。由PID 1擁有的進程中運行,直到它或者通過shutdown命令停止,或者自行終止(或崩潰。)
這些過程稱爲守護進程在希臘神話中的更比人類精神後。他們被稱爲是因爲(a)這是一個可愛的名字; (b)與常規用戶程序相比,它們具有「超自然力量」;和(c)以前的黑客喜歡可愛的名字。
謝謝查理!我有一個Java程序,我想在後臺運行它(如Windows服務),並在系統啓動時自動啓動,它可以在Mac OS X上運行嗎? 守護程序基本上是一個自動啓動並在後臺運行的程序。這是否意味着我的java程序本質上是一個守護進程? – tom 2011-05-27 21:13:34
你打賭,湯姆。閱讀「man 1 launchd」和「man 1 launchctl」 - 你基本上可以要求launchd將程序作爲守護進程運行。另一種方法是從命令行運行並「取消」它:'$ java -jar myapp.jar&disown'。 – 2011-05-27 21:23:35
順便說一下,OS/X啓動的方法比舊式方式要容易一些,需要'/ etc/inittab'中的相當神祕的配置文件。 – 2011-05-27 21:27:03
- 1. 爲Mac OS X安裝守護進程
- 2. OS X雙叉 - 守護進程腳本
- 3. 用Clojure/JVM守護進程
- 4. OS X - 啓動守護進程和啓動代理之間的通信
- 5. 守護進程和啓動代理之間的數據交換
- 6. unix,BSD,Mac OS X,linux和GNU之間有什麼關係?
- 7. 守護進程線程終止於jvm
- 8. 的Mac OS X的mysql啓動守護進程定期不啓動開機
- 9. Mac OS X和iPhone之間的同步
- 10. execve來自Mac OS X launchd守護程序
- 11. 不同HTTP端口上的多個Jenkins守護進程(Mac OS X)
- 12. 在MAC OSX中啓動守護進程
- 13. REX OS和Brew OS之間的關係?
- 14. MAC更改程序或守護進程?
- 15. 在Mac OS X的進程之間共享OpenGL幀緩衝區
- 16. 守護進程關閉和清理
- 17. launchctl OS X Perl全局守護進程變量
- 18. OS X 10.8守和Java小程序
- 19. Mac守護進程howto(由'book')
- 20. 批處理和守護進程之間的區別
- 21. Linux:分叉兩次和守護進程之間的區別(ise)
- 22. 守護進程和Django協議之間的數據同步化
- 23. Java和Python守護進程之間的數據橋
- 24. 鍵盤映射 - Mac OS X和Mac OS X 10.5+之間有什麼區別?
- 25. mac os x通過屬性列表定義一個守護進程的工作時間段
- 26. emacs守護進程和magit
- 27. Qt中的linux系統守護進程
- 28. iphone守護進程
- 29. 使用python守護進程獲取OS X 10.7上的活動應用程序
- 30. Java中的守護進程和非守護線程優先級
JVM或Java虛擬機是處理Java程序執行的運行時。因此,除非您使用Java編寫JVM,否則您的程序不能成爲JVM,這很不尋常。 – 2011-05-27 20:53:48
@Charlie Martin:守護進程和JVM在維基百科上可用。 http://en.wikipedia.org/wiki/Daemon_(computing),http://en.wikipedia.org/wiki/Jvm。很高興知道@tom是否閱讀過這些內容。我會很高興他們可以提出更多**具體**問題,包括來自文章中的實際引用,顯示任何混淆或困難的來源。 – 2011-05-27 21:00:34
@Charlie Martin:當你不清楚提問者所知道,不知道,已閱讀並且沒有閱讀時,回答並不快。當然,可以猜測或假設並寫出一個無用的答案。這似乎並不快。 – 2011-05-27 21:06:57