Linux系统编程
CarmenIsOK
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(一)Linux系统编程之文件、目录操作
1.复制文件描述符 #include <unistd.h> int dup(int oldfd); oldfd-要复制的文件描述符 返回值:新的文件描述符 dup调用成功: 有两个文件描述符指向同一个文件 返回值:取最小的且没被占用的文件描述符,若错误返回-1,错误代码存入errno中。 为什么需要复制一个新的文件描述符? 一个原因是使用fdopen。fclose关闭传递给它的文件描述...原创 2019-04-21 16:03:16 · 605 阅读 · 0 评论 -
(三)Linux系统编程之进程间通信
1.什么是IPC a.进程间通信 i.InterProcess Communication 2.进程间通信常用的4种方式 a.管道-简单 b.信号-系统开销小 c.共享映射区 -(有无血缘关系的进程间通信都可以) d.本地套接字 - 稳定 由于每个进程都有各自不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不见,所以进程之间要减缓数据必须通过内核,在内核中开辟一块缓冲区。内核提供这种机...原创 2019-05-07 17:21:55 · 645 阅读 · 0 评论 -
(二)Linux系统编程之进程
fork() int fork(void) fork()函数有两个返回值: (1)父进程返回子进程的PID (2)子进程返回0 其中: 父进程和子进程的进程ID不一样 用户区数据一样(栈、堆、.text、.bss、.data、动态库加载区、env环境变量、命令行参数) 地址空间一样 .text(代码段)一样:子进程创建成功之后,代码的执行的位置是【父进程执行到了哪儿,子进程就从哪里开始执行】 子进...原创 2019-04-27 16:56:33 · 325 阅读 · 0 评论 -
(四)Linux系统编程之信号
一、信号集 ·1、概念 未决信号集 阻塞信号集 2、自定义信号集 int sigemptyset(sigset_t *set); 将set集合置空 int sigfillset(sigset_t *set); 将signo信号加入到set集合 int sigdelset(sigset_t *set,int signo); 从set集合中移除signo信号 int sigismember(co...原创 2019-05-22 19:45:34 · 229 阅读 · 0 评论 -
(六)Linux系统编程之线程(上)
线程 那么线程不要传递局部变量的地址,因为每个线程的栈区是不稳定的,经常会改变。 Linux和Windows的线程不一样 Linux: (1)在用户看来,线程和进程不一样:因为线程没有自己的地址空间,多个线程共用一块内存空间 (2)在内核看来:由于内核只看pcb,因此它分不清进程和线程。【如果你有n个pcb,那么有n个进程】 Linux下的线程来的比较晚,Linux操作系统诞生之后并不是就有线...原创 2019-05-28 09:50:04 · 232 阅读 · 0 评论 -
(五)Linux系统编程之守护进程
一、守护进程 1、守护进程的特点 后台服务进程 独立于控制终端【去掉依赖的终端】 周期性执行某任务 不受用户登录注销影响 一般采用以d结尾的名字(服务) 2、进程组 进程的组长? 组里面的第一进程 进程组的ID == 进程组的组长的ID【PID】 进程组组长的选则 进程中的第一个进程 进程组ID的设定 进程组的id就是组长的进程ID 3、会话 - 多个进程组 创建一个...原创 2019-05-25 15:55:10 · 442 阅读 · 1 评论 -
(七)Linux系统编程之线程(中)
一、哲学家就餐模型原创 2019-05-29 10:41:10 · 409 阅读 · 0 评论 -
(八)Linux系统编程之线程(下)
一、信号量(信号灯) (高级的互斥锁) mutex=1 lock() mutex=0 unlock() mutex=1 mutex实现的同步都是串行的 互斥锁:串行 信号量:并行 1、头文件 - semaphore.h 2、信号量类型 sem_t sem; 加强版的互斥锁【mutex>=1】 3、主要函数 初始化信号量 sem_init(sem_t *sem,int pshar...原创 2019-05-29 16:08:58 · 245 阅读 · 0 评论
分享