我们知道,Java或Android使用JNI可以实现与C或C++代码的交互,这在开发需要进行TCP或UDP通讯的java或android应用时显得尤为重要。Java或Android要调用JNI(Native)方法,需要先将封装好JNI接口的C或C++代码编译成动态函数共享库(我们通常以so作为其后缀),然后调用 System.loadLibrary方法将该so文件加载到Java或Android的运行环境去。编译该so文件很简单,Java加载的so文件直接使用gcc编译即可;Android加载的so则需要使用Android NDK内的ndk-build来编译。 阅读全文
配置文件是为了在不改变源程序的基础上,通过更改其内容来控制源程序行为的文件,该文件由源程序在启动时加载或者在运行过程中定期加载。每个源程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。由于Linux系统中并没有标准的配置文件格式,所以每次遇到一个新的配置文件就可能面临一次新的挑战。配置文件的格式依赖于编写源程序的程序员的喜好,为了便于用户使用,我们在编写程序时应该尽量秉承简洁明了的原则。配置文件按照隶属干系的不同,又可以分为全局配置文件跟用户配置文件。全局配置文件直接隶属于操作系统内核,需要管理员权限方能修改,对每个用户都生效,通常位于 /etc 目录下;用户配置文件直接隶属于每个用户,只能被对应的用户或者管理员修改,也只对相应的用户有效,一般以隐藏文件或目录(文件或目录名以“.”开头)的形式位于各个用户的家目录下。 阅读全文
Linux操作系统包括三种不同类型的进程,一般分为交互进程、批处理进程和守护进程三类。交互进程是由一个终端(Shell)启动的进程,它既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个由脚本启动的进程序列。守护进程总是活跃,在系统启动时通过脚本自动启动,或由root启动,通常在后台运行,直到系统关闭时退出。一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。Linux系统中,init 进程是内核启动的第一个用户级进程,它有许多很重要的任务,比如象启动getty(用于用户登录)、维护运行级别、处理孤儿进程等,所有进程都是它的子进程。 阅读全文