系统编程
。。
啥也不会 ,吃了就睡
展开
-
shell编程
文章目录1基本语法1.1 变量1. 2文件名代换1.3 命令代换符1.4算术代换1.5转义字符 \ 和 --1.6单引号双引号1.7数据类型2shell脚本语法2.1条件测试2.2分支语句2.2.1if2.2.2case2.3循环2.3.1for/do/done2.3.2while/do/done2.3.3break/continue2.4位置参数 和特殊变量2.5输入输出2.6函数2.7shell脚本调试方式3正则表达式3.1基本语法3.1.1字符类3.1.2数量限定符3.1.3位置限定符3.2grep命原创 2020-06-26 14:45:34 · 155 阅读 · 0 评论 -
面试部分----操作系统部分(linux)
内存管理:1:连续分配管理方式1:固定内存分配:缺乏灵活性 ,会产生大量内部碎片 内存的利用率低2:动态内存分配 产生外部碎片。 可以通过紧凑技术来解决但是耗时大2:非连续分配管理方式1:基本分页存储管理2:基本分段存储管理3:段页式存储管理...原创 2020-05-03 18:11:04 · 155 阅读 · 0 评论 -
生产者消费者问题及哲学家
1使用条件变量和互斥量来解决#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<string.h>#include<sys/types.h>#include<sys/stat.h>//节点结构...原创 2020-02-24 22:00:37 · 160 阅读 · 0 评论 -
linux系统编程--信号量
1信号量概念(高级互斥锁)1.1分类根据共享资源的数目可分为二值信号量和计数信号量两类。分类取值举例二值信号量0和1指示锁计数信号量0和n停车场电子牌分类特点命名信号量基于文件匿名信号量基于内存1.2作用控制多进程/多线程共享资源的访问(资源有限并且不共享)1.3本质任一时刻只能有一个进程/线程访问临界区(代...原创 2020-02-24 22:01:02 · 391 阅读 · 0 评论 -
linux系统编程--线程同步
1:概念1.1来源:资源竞争#define MAX 100int number;void *funcA(void* arg){ int i; for(i=0;i<MAX ; ++i){ int cur=number; cur++; number=cur; printf("pthread A,ID=%lu number=%d \n",pthread_self()...原创 2020-02-24 22:00:11 · 446 阅读 · 0 评论 -
linux系统编程--线程
1概念1.1什么是线程线程是比进程更小的能独立运行的基本单位,线程基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如线程ID,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源(除了栈)。其实在linux下线程就是进程–轻量级进程对于内核来说,线程就是进程1.2线程生成图1.3主进程和子进程共享 除了栈以外,基本都共享不共享的栈区...原创 2020-02-22 22:34:02 · 160 阅读 · 0 评论 -
linux系统编程--守护进程
0守护进程0.1特点后台(不与要进行交互)服务进程独立于控制终端周期性执行某任务不受用户登陆注销影响一般采用以d结尾的名字(服务)0.2进程组 进程组的组长组里边的第一进程进程组的ID==组长的id0.3会话-多个进程组之间的通信创建一个会话注意事项不能是该进程的组长创建会话的进程成为新进程组的组长(因为创建会话,系统会建立一个组 然后把需要会话的进...原创 2020-02-22 22:33:34 · 155 阅读 · 0 评论 -
linux系统编程--信号
1概念1.1特点简单携带信息量少使用在某个特定的场景中()1.2信号的状态产生键盘:ctrl+c命令:kill系统函数:kill软体件:定时器硬件错误:段错误未决状态(没有被处理了,等待被处理)递达(信号被处理了)状态关系图信号流程图1.3处理方式忽略捕捉执行默认处理1.4信号4要素编号信号对应的事件默认动作信号有...原创 2020-02-20 22:36:20 · 300 阅读 · 0 评论 -
linux系统编程--内存映射(进程通信)
1 进程间通信的思路 有血源关系的父亲进程之间共享内存映射区相比于文件操作优势在于1:效率高(因为直接在内存上操作)2:不阻塞缺点在于:一定要注意读写顺序 没有血源关系的进程间通信如何通信不能使用匿名映射的方式 ,只能借助磁盘文件创建映射区不阻塞a(a.c)进程 b(b.c)进程a.c ( int fd=open("hello"); ...原创 2020-02-19 21:24:45 · 184 阅读 · 0 评论 -
linux系统编程--内存映射区概念及相应函数
0基本概念1查看(系统的fifo文件):man shm_overviewls /dev/shm2分类内存映射文件匿名内存映射(亲缘进程)共享内存区对象(非亲缘进程)3创建/打开文件int shm_open(const char *name, int oflag, mode_t mode)3.1参数参数含义nameposix IPC名字,格式为/so...原创 2020-02-19 21:24:18 · 121 阅读 · 0 评论 -
linux-x系统编程-有名管道fifo
1特点在磁盘上有这样一个文件ls -l -> p伪文件,在磁盘大小永远位零在内核中有一个对应的缓存区半双工的通信方式2使用场景没有血源关系进程间的通信345进程间通行5.1fifo文件 myfifo两个不相关的进A(a.c)B(b.c)-a.c–>readint fd=open(“myfifo”,O_RDONLY);read(fd,buf...原创 2020-02-19 21:23:33 · 129 阅读 · 0 评论 -
linux系统编程--匿名管道
0分类1 单工管道程序进程与Shell命令行进程单项通信1.1打开管道FILE* popen (const char *command, const char *open_mode)1.1.1参数No. 参数含义1 command命令行字符串2 open_mode"r"只读"w"只写1.1.2返回值No. 返回值含义1 ...原创 2020-02-18 20:59:25 · 125 阅读 · 0 评论 -
linux系统编程 --进程基础
1概念1.1程序与进程程序: 2进制文件占用磁盘空间进程: 启动的程序;1:所有数据都在内存中 2:需要占据更多的物理资源(CPU 物理内存)3:资源分配最小单位例如: 如果程序是棋谱,进程就是棋士复盘; 程序是静的,进程是动的。1.1.2从程序到进程内核将程序读入内存,为程序镜像分配内存空间。内核为该进程分配进程标志符PID。内核为该进程保存PID及相应的进程状态信...原创 2020-02-17 21:13:49 · 213 阅读 · 0 评论 -
linux系统编程--进程函数
1进程控制1.1fork{int fork(void)}1.1.1 返回值返回值含义-1失败0子进程逻辑控制流其他(子进程PID)父进程逻辑控制流1.1.2特点1: 调用一次,返回两次2:相同但是独立的地址空间3: 并发执行int main(int argc,char *argv[]){ int n=atoi(argv[1]);...原创 2020-02-17 21:13:12 · 260 阅读 · 0 评论 -
linux系统编程--管道基础
0进程之间共享文件//父if(pid>0){ char *p="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; write(fd,p,strlen(p));}//字else{ sleep(1); char buf[1024]; //因为父进程写完就到了文件末位,所以要把文件指针偏移到文件开头 lseek(fd,0,SEEK_SET); ...原创 2020-02-17 21:12:14 · 150 阅读 · 0 评论 -
C++makefile入门
1.Makefile基本语法与执行1.1实例all:test.o set.o set1.o #这样就可以执行全部了test.o:test.c #如果依赖文件找不到直接报错 g++ test.c -o test.o#但是只执行第一个set.o:set.c g++ set.c -o set.oset1.o:set1.c g++ set1.c -o set1.oclean: rm...原创 2020-02-14 21:32:46 · 1766 阅读 · 1 评论 -
linux 系统编程-vim常用命令
1vim 3种模式1:命令模式2:文本输入模式3:末行模式2光标移动跳转到指定行:命令模式:行号 G末行模式:行号跳转到行首命令模式:gg跳转到行尾命令模式:G自动化程序(格式话)命令模式gg=G大括号对应(找到另一个括号)命令模式:%光标移至行尾命令模式: 03删除删除一个子符:命令模式:x(删除完模式不遍)...原创 2020-03-22 21:41:38 · 87 阅读 · 0 评论 -
linux 系统--gdb
1基本概念不能检查语法错误,只能检查逻辑错误2基础指令-g:使用该参数编译可执行文件,得到调试表gdb a.out:开始调试list :list 1 列出源码,根据源码指定,行号设置断点,不加行号,默认出现在上次的地方 每次显示10行b 行号:在该行号设置断点run/r:运行程序到断点n/next:下一条指令(会越过函数)s/step:下一条指令(会进入函数)p/...原创 2020-03-22 21:41:00 · 128 阅读 · 0 评论 -
linux系统--静态库/共享库(动态库)
1基本概念1作用分离编译代码重用2动态库和静态库的区别静态库:在可执行程序运行前就加入到执行码中,成为执行程序的一部分一个或多个.o目标文件归档在一个文件中对空间要求较低,而对时间要求较高的核心程序中动态库:在可执行程序运行启动时加入到执行程序中,可以被多个可执行程序共享使用没有main函数的可执行文件对时间要求较低,而对空间要求较高的2静态库的制...原创 2020-03-22 21:40:39 · 191 阅读 · 0 评论 -
linux 系统基础--gcc4步骤
1步骤预处理:展开宏 头文件 替换条件编译 删除注释空行空白编译:检查语法规范汇编:将汇编指令翻译成机器指令链接:数据段合并。地址回填2基本常用参数I 指定头文件的目录 参数位置都可c 只预处理 编译汇编 生成点o文件(2进制文件)g 编译时添加调试语句,主要支持gdb调试-On 编译优化 。n=0~3Wall 显示所有的警告信息E 生成预处理文件D 向程序中动...原创 2020-03-22 21:40:16 · 445 阅读 · 0 评论