faxiang1230 Blog

IT渣男

进程单例执行的方法

Linux中程序单例运行的几种方式 我们写了个程序,但是只想让它只执行一次,但是我们没有权利来限制其他人运行这个程序,有以下几种方法来保证程序的单例运行: 1.程序的运行需要特殊权限,而这个权限只有管理员才有,管理员自己来维护程序的单次运行,这个不是我们能控制的 2.程序自己探测是否已经有进程在运行自己 我们主要列举出第二个选项,毕竟我们是程序员嘛,让你相信自己的程序还是业余用户的...

bash的builtins

strace和bash遇到了builtin 在描述问题之前先简单回顾一下以下几个东西: ssh登录发生了什么 1.ssh连接远程ssh server服务,通过认证 2.ssh server打开一个新的pts,并转接给ssh client 3.ssh client拦截本地所有的输入传送给server,回显server返回信息 bash是如何执行一条命令 bash接收用户的...

signal(2)

信号的总结

信号(2) 有什么办法控制另一个进程呢? 在linux系统中每个进程都有自己的虚拟地址空间,所以进程间是相互隔离的。 那么有什么办法来控制一个程序呢,从现在的角度来看,可以使用各种进程间通信,但是通信是双方的事,假如 采用套接字通信,那么确保每个程序都是可控的,需要每个程序都使用套接字来接收消息,难道我只是想写个 helloworld还需要创建个套接字? 所以这件事交给每个程序来实现是...

gdb调试

gdb调试 Fistly,you should read gdb cheatsheet 工程中有gdb工具来帮助调试,常见的使用场景: 1.看代码逻辑,例如断点,bt等来看代码的调用路径 2.看堆栈,例如程序hang住了,或者已经crash生成core文件 3.看内存,寄存器,变量 其他的例如随机crash使用gdb都是比较无力的,gdb只能适用于一些固定代码逻辑上出问题...

Android binder(UNFINISHED)

Android binder Android是基于Linux系统的,在Linux系统中进程间通信已经存在一些成熟的进程间通信方法了,为什么 android还创造出来binder呢?肯定是现存的进程间通信不能满足需求,然后才创造的新的进程间通信方式。 android binder是基于openbinder,而后者始于BeOS,PalmOS系统的,后来被android继续开发这个 框架形成了a...

Android logging system

Android Logging System 概览 Android系统中构建了一个自己的日志系统,允许从普通应用到系统组件,native应用等来记录日志。这个 日志系统和Linux内核自己的日志系统是不一样的,后者通过dmesg或者/proc/kmsg,/dev/kmsg等访问。 不过这个日志系统也是存储在内核空间的buffer中 日志系统包括下面几个组件: 内核驱动logger,其中申请...

Android adb arch

Android adb arch(UNFINISHED) Android里面存在一个非常重要的工具:adb,没了它大部分的应用开发人员几乎完全失去了调试手段。 同时有很多通过adbd的漏洞来攻击android设备,第一个是本身存在一些漏洞,例如比较早版 本的RageAgainstTheCage,android应用连接上adbd 5555端口之后具有shell权限;只要连上adb 就可以获取、...

从Linux角度看Android系统

从Linux角度看Android系统 很多人都说Android是运行在Linux内核上的,我也知道Android底层跑的是Linux内核,我的认识仅止于此。 我对上层的Andrid框架,应用等的认识一直都没有和Linux模型结合起来,没有认真从Linux模型的角度来 审视Android系统,在我的观念中,Linux和Android是完全不同的两个东西,这个观念是完全错误的。 Android基...

Android init.rc中的oneshot

Android init.rc中的oneshot 从uboot到kernel,内核在启动完之后会将主动权交给用户空间,就是init进程。 在Android系统中,它没有使用传统嵌入式中的bash程序而是自己定制了init的进程,和其搭配的就是init.rc文件。 init.rc文件就是一种格式的配置文件,还可以include其他的配置文件,init程序读取配置依次启动一系列程序为Androi...

为什么使用git

为什么使用git 为什么我们要拥抱git呢?我们为什么花费精力去学习git的命令呢? 下面是描述git在工程中的使用场景和解决什么问题,规范等等,并不描述使用方法,想了解具体命令的推荐去看gitscm官方文档 PS:我没有使用过svn进行版本管理工具,所以不去和svn进行对比 有人可能没有使用过版本管理工具,认为它太复杂,还需要花费相当大的精力来学习命令,仍然使用文件夹整体备份的方式来。 我...