
Linux
~Ran~
这个作者很懒,什么都没留下…
展开
-
[Linux]System V 信号量
目录介绍原理创建/打开信号集操作信号量集(原子操作)控制信号量集介绍为了防止出现因多个进程同时访问一个共享资源引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。信号量就可以提供这样的一种访问机制,确保多个线程在对共享内存这样的共享资源同时读写时,使之实现同步与互斥,也就是说信号量用来调协进程对公共资源的访问的。信号量本质上是一...原创 2019-10-27 15:57:51 · 428 阅读 · 0 评论 -
[Linux]System V 消息队列
目录信号量是用来调协进程对共享资源的访问的。原创 2019-10-24 13:56:33 · 317 阅读 · 0 评论 -
[Linux]System V 共享内存
目录System V 共享内存创建共享内存建立映射关系解除映射控制共享内存关于函数ftokSystem V 共享内存共享内存就是将同一块物理内存映射到不同进程虚拟内存的共享区域,实现两个进程间通信。一旦这样的内存映射到进程地址空间的共享区,这些进程间数据传递不再涉及到内核,不再通过执行进入内核的系统调用来传递彼此的数据,所以说共享内存是最快的IPC形式。我们可以通过命令查看/删除系统中已有的...原创 2019-10-21 17:13:11 · 371 阅读 · 0 评论 -
[Linux]进程间通信=>管道
目录介绍匿名管道命名管道管道读写规则从内核看管道介绍每个进程各自有不同的用户地址空间,都是独立运行,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程把数据从用户空间拷到内核缓冲区,另一个进程再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。我们常用 ‘|’ 符号来用一个命令来处理另一个命令的显示结果cat test.c |less这个过程本质上是创建cat进程传...原创 2019-10-20 20:54:04 · 192 阅读 · 0 评论 -
[Linux]进程替换
当进程调用exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序开始执行。调用exec并不创建新进程,调用前后进程id并未改变。系统调用:int execve(const char* path, char* const argv[], char* const envp[]);库函数:int execl(const char *path, const char *arg, .....原创 2019-10-19 13:24:15 · 204 阅读 · 0 评论 -
[Linux]进程终止与wait参数status
目录常见进程退出方法常见进程等待方法wait参数status到底有啥东西常见进程退出方法exit或_exit退出_exit系统调用函数:void _exit(int status);参数status定义了进程的终止状态,父进程通过wait获取该值。虽然status是int,但是仅有低8位可以被父进程所用,实际上就是子进程的返回值。exit库函数:void exit(int statu...原创 2019-10-18 10:43:39 · 1818 阅读 · 0 评论 -
[Linux]僵尸进程与孤儿进程详解
目录僵尸进程观察一个僵尸进程僵尸进程的危害孤儿进程观察一个孤儿进程总结如何解决/避免僵尸进程僵尸进程linux中,正常情况下,子进程和父进程是一个异步过程,父进程永远无法预测子进程 到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用wait系列系统调用取得子进程的终止状态。如果子进程退出,而父进程并没有调用wait获取子进程的状态信息,那么子进程的task_struct结构...原创 2019-10-17 21:02:38 · 380 阅读 · 0 评论 -
[Linux]理清fork、vfork、clone、system、popen
目录pid_t fork(void);子进程返回0,父进程返回子进程pid,出错返回-1原创 2019-10-13 23:46:09 · 817 阅读 · 0 评论 -
[Linux]基本体系结构
Linux的体系结构一个完整的操作系统由内核、命令解释层、文件系统等部分组成内核执行最底层的任务,保证系统正常运行,协调多个并发进程,管理进程内存。主要组成模块:文件系统驱动模块硬件设备驱动模块内存管理模块进程管理模块网络管理模块命令解释层用户和内核交流的媒介,接收并解析用户的命令,然后将其送入内核执行,每个用户都可以有自己的用户界面或者shell用来满足自己专门的sh...原创 2019-10-03 22:56:52 · 2122 阅读 · 0 评论 -
[Linux]进程基础
进程是程序执行时的一个实例,可以分配给处理器并由处理器执行的一个实体,是由单一顺序的执行显示,是一个当前状态和一组相关的系统资源描述的活动单元...原创 2019-10-08 23:58:02 · 257 阅读 · 0 评论 -
[Linux]详解main函数的三个参数
目录argc与argvenv常见的环境变量环境变量相关命令通过代码查看环境变量./main执行和main执行是否应该使用第三个参数envC程序总是从main函数开始执行的,main函数的原型是:int main(int argc, char* argv[], char* env[])argc与argvargc表示传入main函数的参数个数;argv[]表示传入main函数的参数序列或指针...原创 2019-10-09 14:53:07 · 1953 阅读 · 0 评论