Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        2年前关闭。
                                                                                            
                
        
我想创建一个守护进程,该进程将在系统(Unix)重新启动时在后台自动开始执行。为了进行测试,我编写了一个shell脚本文件,并将该文件的路径放入/etc/rc.local中,并且该文件成功运行。

我搜索发现几乎所有守护进程都使用C编写。
我的问题是:为什么用C而不是Java或Shell脚本?
如果我用Java编写,那是什么问题?

最佳答案

这实际上取决于守护进程要实现的工作类型。

通常,守护程序提供某种服务,包括(但不限于)监视文件并在发生某些更改时执行操作(签出inotify,一个核心Linux C库),侦听连接和/或传输信息。

C是Linux的通用语言,因为它快速,灵活并且是very close to machine-level codeGNU Compiler Collection (gcc)是Linux的重要组成部分,GNU C Library (glibc)中包含各种有用的C库。这个glibc实际上是每个Linux发行版的一部分。

您可以轻松地使用systemd保持Python,PHP甚至Java守护程序运行。这些脚本甚至是在虚拟机中运行的小程序都可以执行与C守护程序相同的功能,但是性能和开销要求各不相同。

用Java编写守护程序并不一定没有错,但是与Linux本地运行的C程序相比,您可能需要为running it in a JVM分配更多的内存和CPU周期。

用您喜欢的任何一种语言编写守护程序,但是请记住,如果您决定从Java程序中召唤一个守护程序,则会有很多牺牲。考虑一下您使用Java(或其他任何语言)的原因,以及它的缺点和好处是否值得。

如果您对C不满意,我会衷心建议您尽力而为。考虑到编写OS和底层程序的流行程度,学习起来很麻烦。许多语言都是基于C语法的,因此在将来学习新语言时,掌握C技能可能会有所帮助。

10-07 16:24
查看更多