Linux/Unix
aaajj
一起学习吧
展开
-
【Android】从SurfaceFlinger中获取各layer图片(2)
在前面的【Android】从SurfaceFlinger中获取各layer图片(1)里面,提到通过获取surfaceFlinger中的GraphicBuffer结构中的共享内存的fd来达到访问图像数据的内存地址,进而实现访问对应的图像数据,理论上是可行的,但是实际处理会有问题,最终需要通过传送GraphicBuffer对象来达到这个目的。这里记录下探索过程LINUX/andr...原创 2019-10-13 20:51:16 · 1345 阅读 · 2 评论 -
【Android】直接构造BpBinder(handle)进行binder通信猜想
猜想在native层进行Binder通信时,客户端使用的是BpBinder对象。如 sp sm = defaultServiceManager();sp service = sm->getService(String16("power")); defaultServiceManager()的返回值是对BpBinder(0)的包装,get原创 2017-09-19 21:34:29 · 1219 阅读 · 0 评论 -
【Android】Parcel简介
1. Parcel的原理是把数据按照类型和顺序写在内存中,取数据的时候,按照同样的顺序即可2.存储数据的时候,以4字节为基本单位进行内存对齐3.采用memcpy以及 *reinterpret_cast(mData+mDataPos) = val; 的方式写内存数据4.采用realloc的方式扩展内存大小5.和binder纠缠在一起了,传送文件描述符的时候,对数据动了手脚,根据原原创 2017-06-10 18:04:48 · 396 阅读 · 0 评论 -
SIGPIPE信号
在dumpsys源码里,对SIGPIPE信号进行了屏蔽signal(SIGPIPE,SIG_IGN);SIGPIPE信号是什么呢?broken pipe普遍解释是:当管道的读端 关闭,而写进程继续向管道写数据的时候,就会有SIGPIPE信号管道为什么要这样设计呢?通过一个例子我们就可以理解这样设计的妙处了。看看原创 2017-06-03 18:23:41 · 480 阅读 · 0 评论 -
【Android】Binder传送文件描述符分析
在进行dumpsys调用的时候,dump方法的第一个参数是文件描述符BinderProxy.java publicvoid dump(FileDescriptor fd, String[] args) 通过传送文件描述符来让服务端向给定的文件写数据,等等,仔细想想,好像有什么不对是啊,每个进程中的文件描述符是独立无关的,你把C进程中的文件描述符传给S进程,这不原创 2017-06-17 16:38:49 · 1661 阅读 · 0 评论 -
【Android】killProcessesWithOpenFiles回顾
如何查看一个文件被哪个进程打开(占用)呢?在之前的介绍http://blog.csdn.net/aaajj/article/details/51854015里,讲解了killProcessesWithOpenFiles的实现流程。这里我们再回顾下找的过程。在Android(Linux)系统中,/proc里面有进程的相关信息,比如有123, 124,125这样的以进程号命名的原创 2017-05-23 20:43:55 · 739 阅读 · 0 评论 -
对编译原理的一些理解
概括计算机是一种可以计算的机器,是一种电气设备,也可以理解是一种高级机械程序是用来实现一定功能的操作指令(工具)最早的指令是二进制形式的机器码(石头)二进制过于繁琐,于是出现了更容易编写和被理解的汇编语言(石器)在进行了大量与长久的汇编语言编写程序之后,一个时代中大量杰出的计算机科学家与工程师开始思考,可否设计另外原创 2017-01-27 16:46:59 · 784 阅读 · 0 评论 -
Linux汇编练习
汇编的学习和熟悉如果直接从理论看起,会太空泛从程序来进行实践,是加深理论的有效方法《使用Linux汇编语言》里的例子exit.s.section .data.section .text.globl _start_start:movl $1, %eaxmovl $0, %ebxint $0x8原创 2017-01-26 12:26:55 · 487 阅读 · 0 评论 -
【Android】log系统初识
本来准备采用写/dev/log/main的方式进行底层的写log测试,但是Android6后就没有/dev/log/main了,根据参考资料来查看分析,得到一个大致的概念,Android中由于log量大,为了方便的处理log,采用进程logd来写log,我们调用Log.d()方法写log的时候,会导致底层通过socket向logd进程写数据,logd将数据写到其缓存中,当使用logcat去获取原创 2017-10-30 21:47:16 · 2555 阅读 · 0 评论 -
【Android】SELinux初探
查看/data/local/tmp路径下文件的contextSunday:/data/local/tmp$ ls -Zu:object_r:shell_data_file:s0 tServer可以看到关键词shell_data_fileSunday:/data/local/tmp$ ./tServeraddmySe原创 2017-11-28 22:33:06 · 943 阅读 · 0 评论 -
[Android]设置进程的安全上下文
为了能够清楚的理解进程的上下文,我们来做一个试验,通过在rc文件中进行注册启动一个进程,即让init进程来fork出一个进程。以/system/bin/service程序为例,我们在里面增加一个长时间的sleep,以便于我们观察。增加service.te#service.tetypemTestService, domain, domain_deprecated, m原创 2017-12-31 16:54:27 · 1279 阅读 · 0 评论 -
规范编程之变量的初始化
一个进程crash的问题,ExceptionClass: Native (NE)Exception Type: SIGSEGVCurrentExecuting Process: pid: 386, tid: 399/system/bin/TyserviceBacktrace:#00 pc 0000000000092894 /system/lib64/libc.so (ifree+88)#01 pc...原创 2018-05-14 18:12:53 · 538 阅读 · 0 评论 -
toybox分析
toybox分析2018-10-23Android系统中的很多命令,如ps,其本质都是toybox里面的功能。/system/binlslrwxr-xr-x 1 root shell 6 2009-01-01 00:00 ps -> toyboxlrwxr-xr-x 1 root shell 6 2009-01-01 00:...原创 2018-10-24 17:42:08 · 7264 阅读 · 0 评论 -
【Android】usb连接断掉后adb shell中启动的程序停止分析
之前碰到个问题,使用adb shell执行手机上自己写的shell脚本,比如反复点击操作的脚本,在usb断掉后就会停止执行,使用 & 切换到后台执行还是会停止,但是logcat > 1.log &就不会停止 这几天又关注了下这个问题,发现使用./ 的方式启动非原生程序的时候,其父进程是sh而sh的父进程是adbd,当usb连接断掉的时候,就导致程序退出...原创 2018-12-25 20:52:37 · 3923 阅读 · 5 评论 -
【Android】Android 8上查看线程信息
在Android 8之前,toolbox中的ps命令 ps -t <pid> 可以查看进程的线程信息,但是在Android 8后,toolbox被toybox替代了,里面的ps没有查看线程信息的命令。查看线程信息有时候在分析问题时很有用,比如查看binder线程数量,怎么获得线程的信息呢? 我们可以参考toolbox中ps的写法,到/proc 里面去查看,也可以考虑把...原创 2019-01-30 14:09:05 · 2169 阅读 · 3 评论 -
c++层使用和编译aidl文件例子
c++层使用和编译aidl文件可以参考av/camera里的例子 这里给出了一个简化版的工程例子测试的工程路径为源码路径下的frameworks/native/cmds/bitTubeaidl文件ITest.aidl package android.hardware; interface ITest{ int getData();} ...原创 2019-02-25 21:03:56 · 8225 阅读 · 0 评论 -
通过文件描述符(fd)去访问Android共享内存
关于Android共享内存,可以查看下这个资料https://blog.csdn.net/goodlixueyong/article/details/53151959Android中分别提供了C++和Java的访问共享内存的接口Java层使用MemoryFile通过fd去标识共享内存android_os_SharedMemory.cpp里有具体实现Nati...原创 2019-03-26 21:04:40 · 1926 阅读 · 1 评论 -
【Android】写/dev/graphics/fb0显示bmp图片试验
Android中画面的显示机制在底层套用了Linux的FrameBuffer机制,即通过/dev/graphics/fb0去进行画面的显示,相关资料Linux framebuffer显示bmp图片在Android源码中,也提供了一个例子,来设置屏幕的像素点,/system/extras/tests/framebuffer/fb_test.c描点画图方法207v...原创 2019-04-14 21:34:37 · 3391 阅读 · 0 评论 -
学习yacc与lex--计算器实现练习
cal.l%{ #include#include "y.tab.h"extern int yylval;%}numbers ([0-9])+plus "+"minus "-"times "*"divide "/"lp "("rp ")"delim [ \r]bs {delim}*原创 2016-12-14 22:34:04 · 1893 阅读 · 3 评论 -
execv注意事项
execv的处理中有需要特别注意的东西,下面是一个可以正常执行的例子#include #include原创 2016-12-01 21:21:24 · 1932 阅读 · 0 评论 -
rename 出现的奇怪问题
rename 出现的奇怪问题原创 2010-12-27 23:31:00 · 1102 阅读 · 0 评论 -
Linux ftp命令详解
Linux ftp命令转载 2010-12-25 19:01:00 · 559 阅读 · 0 评论 -
重定向屏幕输出
重定向屏幕输出原创 2010-12-26 23:16:00 · 1246 阅读 · 0 评论 -
OCI8程序例子
OCI8的一个程序,先放在这里,有时间再慢慢改进下原创 2010-10-28 21:08:00 · 1841 阅读 · 2 评论 -
12月笔记-10-18
12月笔记-10-18原创 2010-12-20 22:56:00 · 574 阅读 · 0 评论 -
10月的一些知识点
点滴 spool导出数据 sqlldr导入数据到oracle 等原创 2010-10-25 22:46:00 · 950 阅读 · 0 评论 -
笔记-11-30
11月的笔记原创 2010-11-30 20:26:00 · 608 阅读 · 0 评论 -
远程调用shell的方法
远程调用shell的方法转载 2010-11-30 20:42:00 · 2696 阅读 · 0 评论 -
2010-12月笔记20-31
2010-12月笔记20-31原创 2011-01-01 22:27:00 · 500 阅读 · 0 评论 -
2011-1月笔记
2011-1月笔记原创 2011-01-15 23:03:00 · 1109 阅读 · 0 评论 -
core文件的调试使用
查看core文件可以快速的找到程序出错误的地方gdb pro_name core_name有时候系统没有设置生成core文件,需要设置下,最好是生成到程序所在的目录下转载 2010-11-20 21:55:00 · 617 阅读 · 0 评论 -
Linux管道执行ftp
暂时没有找到ftp调用的函数,看到了2010年11月15日的笔记。通过管道的方式调用ftp命令管道的使用 ftp #include int ftpFunction(const char * ip, const char * user, const char * pass, const char * path, const char * filename) {原创 2013-02-20 20:11:21 · 2472 阅读 · 0 评论 -
读文件数据入库设计
2年前的一个文件入库处理设计方法,记录下。当时的入库使用的是sqlldr方法,用一个程序去专门生成控制文件,效率不错 A Data Store ProcessoOriginal data is transmitted from other process constantlyoOne row of the data is such as 20110622~13100~3原创 2012-10-09 23:47:20 · 559 阅读 · 0 评论 -
Unix去除重复行数据
用uniq命令可以删除相邻的重复行: uniq [file] 但如果一文本中有重复却不相邻的行则无法删除,需要结合sort命令: sort [file]|uniq 等效的sort命令是: sort -u [file] 另外uniq命令有4个有用的选项: $uniq -d file 只输出file中的转载 2012-02-15 23:51:25 · 2623 阅读 · 0 评论 -
Unix命令求文件差集
比较2个文件的不同,在数据库里很容易操作在Unix中sort file1>file1.1sort file2>file2.2comm -13 file1.1 file2.2>oocomm -23 file1.1 file2.2>xxsort file1>file1.1sort file2>file2.2comm -13 fil转载 2012-02-15 23:27:20 · 1049 阅读 · 0 评论 -
6月笔记
---需要考虑最后一个字段//get fields of one row from a char* str comparted by the compart charlong CGMDBTable::GetLineFromStr(char* str, char seg){ char* phead = str; char* ptail = str;原创 2011-06-18 10:44:00 · 3085 阅读 · 1 评论 -
TimesTen内存数据库的配置与OCI调用
TimesTen 内存库的使用,使用oci接口进行程序连接原创 2011-05-26 20:34:00 · 2520 阅读 · 0 评论 -
shell中判断当前时间是否为月末的方法
date -d tomorrow '+%d'date -d yesterday '+%d' 得到昨天的日期原创 2011-05-26 20:31:00 · 9515 阅读 · 0 评论 -
一个简单的socket通信聊天程序
一个简单的socket通信聊天程序原创 2010-11-27 22:18:00 · 1806 阅读 · 0 评论