
编程语言
文章平均质量分 82
记录各式各样的与编程语言相关的内容,方便后期查阅
青山渺渺
Android Framework、Android Media开发工程师,关注公众号《青山渺渺》阅读更多内容
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux系统编程(七)管道和FIFO
成功的pipe调用会在数组filedes中返回两个打开的文件描述符,读取端为filedes[0],写入端为filedes[1]。我们可以使用read/write系统调用在管道上执行IO。管道上的read调用会读取的数据量为请求的字节数与管道中当前存在的字计数两者之间较小的那个。在单个进程中管道的用途不多,一般来说是使用管道让两个进程进行通信。为了让两个进程通过管道进行连接,调用完pipe调用之后可以调用fork。fork之后一般会让其中一个进程立即关闭管道的写入段文件描述符,另一端关闭读取的文件描述符。原创 2024-12-29 21:01:02 · 863 阅读 · 0 评论 -
linux系统编程(六)
一个进程可以包含多个线程,同一程序中的所有线程会独立执行相同的程序,共享同一份全局内存区域(初始化数据段、未初始化数据段、堆)。线程可以很好地解决上面的问题要注意,虽然线程之间不会共享栈数据,但是线程栈都是驻留在同一虚拟地址空间的,所以可以通过指针共享对方栈中的数据。在多线程程序中,每个线程都有自己的errno。在linux平台上,编译调用了pthread api的程序时需要设置 -pthread。新线程会调用带有参数arg的函数start开始执行。原创 2024-12-23 23:03:45 · 840 阅读 · 0 评论 -
linux系统编程(五)
信号是事件发生时对进程的通知机制,针对每个信号都定义了一个唯一的整数,这些整数定义在signal.h中。第一个参数表示需要修改的信号,第二个参数handler是修改后的处置函数,返回值是之前的信号处置函数。我们可以使用kill来发送信号如果无进程与指定pid匹配,kill调用失败,errno设置为ESRCH。raise是对自身发送信号,相当于调用kill(getpid(), sig)。多个信号可以使用一个称之为信号集的数据结构来标识,该数据类型为sigset_t。原创 2024-12-22 14:43:09 · 1001 阅读 · 0 评论 -
linux系统编程(四)
调用read和write系统调用操作时不会对磁盘直接发起访问,而是仅仅在用户空间缓冲区与内核缓冲区高速缓存之间复制数据。write调用会立刻返回,后续某个时刻内核才会将缓冲区内的数据刷新至磁盘。如果在此期间有另一个进程试图读取该文件的这几个字节,将从内核缓冲区读取,而不是从文件读取。对于read而言,内核从磁盘读取数据会存到内核缓冲区中,read会从缓冲区读取数据。linux内核对高速缓冲区的大小没有固定上限,且会尽可能多地分配高速缓存页。原创 2024-12-21 09:57:56 · 645 阅读 · 0 评论 -
linux系统编程(三)
每个进程都有自己的进程id,我们可以通过getpid拿到当前进程的id。每个进程也会有一个创建它的父进程,我们可以通过getppid拿到父进程的进程id。进程号的上限默认是32767,但是可以通过/proc/sys/kernel/pid_max 文件来进行调整。如果子进程的父进程终止,子进程就会变成孤儿,init进程会收养该子进程,子进程后续对getppid()的调用将返回进程号1。原创 2024-12-18 21:50:19 · 789 阅读 · 0 评论 -
linux系统编程(二)
fcntl用于控制文件描述符,该系统调用有很多功能,功能用cmd来控制,fcntl后面的参数根据cmd来填充。我们在判断F_GETFL,要用如果只是获取读写权限可以用。原创 2024-12-09 22:38:03 · 768 阅读 · 0 评论 -
linux系统编程(一)
linux 常用类型:clock_t 整形/浮点dev_t 运算类型之一,设备号mode_t 整形off_t 有符号整形 long intpid_t 有符号整形ptrdiff_t 有符号整形sigset_t 整形/结构类型size_t 无符号整形 long unsigned intsocklen_t 至少32位整形ssize_t 有符号整形 long inttime_t 整形或浮点数。原创 2024-12-08 16:42:43 · 850 阅读 · 0 评论 -
常用Vim操作
vimrc配置ctags -R *生成tags文件set numberset ts=4set sw=4set autoindentset cindentset tag=~/tmp/log/help/tags自动补全:ctrl+n:自动补全输入:a:从当前文字后插入i:从当前文字前插入s: 删除当前字符,从当前字符插入回退u:撤销恢复撤销:ctrl+r删除:[n]dd:删除n行[n]dw:从光标开始删除n个词d$: 删除光标之后的内容,但是不删除行号原创 2024-12-08 15:55:12 · 612 阅读 · 0 评论 -
dlopen No such file or directory
最近碰到一个问题,dlopen 打开 lib 时提示 “No such file or directory”,问题奇怪在路径下其他 lib 都可以成功加载,唯独有两个 lib 报这个错误,但是我确实是有把 lib push 到板子上的,检查了半天不知道发生了什么问题。中有提到 “缺少依赖项”,这才反应到报错的两个 lib 有一个共同依赖库没有被 push 到板子上,将该lib push 到板子上问题就被解决了。网上搜索半天,发现一篇文章。原创 2023-09-20 20:49:56 · 781 阅读 · 0 评论 -
设计模式(2) - 创建型模式
创建型模式指的是 创建对象 或是 获取实例 的方式。原创 2023-09-14 23:38:07 · 316 阅读 · 0 评论 -
设计模式(1) - UML类图
最近在阅读 Android 源码,时常碰到代码中有一些巧妙的写法,简单的如 MediaPlayerService 中的 IFactory,我知道它是工厂模式,但是却不十分清楚它为什么这么用;复杂点的像 NuPlayer 中的 DeferredActions 机制,我只能慢慢揣摩它是如何工作的,最终也能琢磨出个大差不差;有些特点不太鲜明的如 NuPlayer Source 中的 wrapper,我就不是很理解它为什么要这么写了。原创 2023-09-06 21:25:43 · 1720 阅读 · 0 评论 -
一文读懂Makefile
一文读懂makefile原创 2023-07-17 00:19:38 · 2894 阅读 · 4 评论 -
常用C语言文件操作
文件操作原创 2023-07-12 00:19:28 · 2390 阅读 · 0 评论 -
位运算的使用
位运算原创 2023-07-11 22:16:02 · 2411 阅读 · 0 评论