Linux/Android系统调用示例
什么是系统调用
计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。在linux中系统调用是用户空间访问内核的唯一手段,除异常和陷入外,他们是内核唯一的合法入口。
……清風有情君意愜, 夢徊怡江詩心緣。~
计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。在linux中系统调用是用户空间访问内核的唯一手段,除异常和陷入外,他们是内核唯一的合法入口。
……最近使用Golang开发了一个内部的Android APK,当提交到测试的时候,遇到非必现的出现以下错误:
……
前段时间写了一个升级查询的后台服务器,涉及到服务器的性能测试,这里仅作记录:
……OmniPlan是一个项目管理工具,价格也还OK,328RMB就可以到手了。~
作为一个时间管理观念较强的开发人员来说,自己画一下甘特图跟踪一下进度也是很不错的。
官方的WiKi链接:https://github.com/golang/go/wiki/Mobile ,但我感觉它写得不是很好,尤其是gomobile init
的部分。
首先,我安装了Android Studio,安装好之后,默认的SDK路径是/Users/scue/Library/Android/sdk
。
其次,我安装了Android NDK,安装好之后,我这边的路径是/Users/scue/source/Android/android-ndk-r16b
。
随后,我们依次执行以下命令来安装gomobile
和初始化gomobile
:
GO语言支持移动开发,可以直接将已有GO代码编译成一个libgojni.so
的形式,然后通过Java层代码去调用它,就可以让原本是二进制的程序,变成了一个apk形式去运行。
gomobile目前尚处于实验室阶段,但凡这种实验性的,遇到点问题都是很正常的,比如本文章所述的内容,可能你将来也会遇到。
……获取自身的MD5值可能有很多用途,比如我们将程序运行客户端时,我们就可以通过对比MD5值来确保自己的程序没有被恶意地篡改。
……golang实际开发中,难免会涉及到调用其他的命令,如果其他的命令输出需要太久的话,我们可能就不会去等待它了,而是期望像我们平时使用Ctrl+C
一样将它给停止掉,然后观察它的输出。
平时工作难免会有一些信息是非常重要的,不期望被他人给明文窃取,尤其是一些重要的资料进行落地的时候,需要进行一下加密。
……