![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 84
cwpanda
这个作者很懒,什么都没留下…
展开
-
Linux 进程通信 -- 管道
1、管道简介管道是Linux提供的进程间通信机制之一,允许通信进程之间通过文件读写的方式单向传递数据。内核实现的文件系统pipefs,会在内核为每个管道文件分配一个的环形缓存区,以支持读/写操作。进程可以使用两种类型的管道进行通信:匿名管道:只支持在父子进程、兄弟进程之间通信。一般使用方式为,父进程调用pipe()创建匿名管道,fork()的子进程默认继承父进程打开的管道 命名管道:支持任意的进程通过管道通信。进程通信前,需要先创建fifo类型特殊的文件,然后读写进程分别打开该文件进行读写2、原创 2022-04-17 18:55:54 · 1647 阅读 · 0 评论 -
Linux Mount Namespace分析
Mount Namepsace简介Mount Namepsace是Linux提供的进程文件隔离机制,通过隔离挂载点的方式,使得不同Namespace下的进程拥有不同的文件系统视图。下面将从设备挂载的例子出发,介绍Linux文件挂载(Mount)、Linux Mount Namespace等技术的实现机制。磁盘设备挂载示例使用unshare命令,在不同的namespace下的shell中执行挂载动作,观察可以发现:可以在一个挂载点重复执行挂载 挂载点之前的文件被“隐藏” 挂载点可被子.原创 2022-02-07 16:00:39 · 1136 阅读 · 0 评论 -
Linux so加载顺序
背景使用gcc8.2编译a.out,机器安装默认的版本为gcc3.4。使用ldd打印so依赖列表,此时libstdc++.so位于/usr/lib64目录下打印程序运行时加载的so库列表,显示加载的是/home/xxx/gcc-8.2/lib/目录下的libstdc++.so使用默认版本编译的程序,运行时加载的时/usr/lib64目录下的libstdc++库此时的环境变量LD_LIBRARY_PATH未设值分析()对比两个进程ldd的结果,可以看到ld-linu原创 2022-02-07 10:58:10 · 1811 阅读 · 0 评论 -
Unix 编程 -- 静态链接 & 重定位
静态链接·重定位静态链接过程会将汇编器生成的可重定位文件(*.o)合并到一个可执行文件中。当链接器完成符号解析后,就会执行重定位过程。重定位过程分为两步:重定位节及符号定义。相同类型的节会被聚合到可执行文件的同一类型的节中,如下图的步骤一。符号解析过程已经确定了符号被定义的模块及节位置,所以重定位节后,每个符号的运行时地址也已经确定了。 重定位节中的符号引用。如下图的步骤二,在编译mai...原创 2019-08-11 18:00:27 · 513 阅读 · 1 评论 -
Linux shell -- find 与 xargs命令
find / -name "*.ini" -exec file {} \;find / -name "*.ini" | xargs -i file {} find ./ -name '*.txt' -type f -print -exec -maxdepth 2 command {} \;-name : 匹配的文件名-maxdepth -mindepth : 指定搜索层上下限...原创 2018-03-15 11:19:03 · 379 阅读 · 0 评论