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