Linux系统编程
文章平均质量分 70
学习Linux系统编程过程中的学习笔记
D-Zero
这个作者很懒,什么都没留下…
展开
-
线程同步概念及常用同步方法
线程同步概念及常用同步方法1.基本概念线程同步:指的是一个线程发出某一功能调用时,在没得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能数据混乱原因:资源共享(独享的资源则不会)调度随机(意味着数据访问会出现竞争)线程间缺乏必要的同步机制2.互斥锁mutex使用步骤pthread_mutex_t lock; //创建锁pthread_mutex_init(); //初始化锁pthread_mutex_lock(); //加锁//访问共享的原创 2020-06-13 20:34:56 · 1292 阅读 · 0 评论 -
Linux下信号的概念及相关函数
Linux下信号的概念及相关函数1.基本概念信号的共性简单不能携带大量信息满足某个特定条件才发送信号的特质信号是软件层面上的中断,一旦信号产生,无论程序执行到什么位置,必须停止运行来处理信号,处理结束后才能执行别的指令所有信号的产生和处理都是由内核完成的与信号相关的事件和状态产生信号按键产生,如:Ctrl+c、Ctrl+z、Ctrl+\系统调用产生,如:kill、raise、abort软件条件产生,如:定时器alarm硬件异常产生,如:非法访问内存(段错原创 2020-06-13 20:22:55 · 365 阅读 · 0 评论 -
线程基本概念与相关函数
线程基本概念与相关函数1.基本概念LWP:light weight process 轻量级的进程,其本质仍是进程进程:独立地址空间,拥有PCB线程:有独立的PCB,但是没有独立的进程地址空间区别:在于是否共享地址空间linux下:线程:最小的执行单位 进程:最小分配资源单位,可以看成只有一个线程的进程2.线程性质线程共享资源:文件描述符表每种信号的处理方式当前的工作目录用户ID和组ID内存地址空间(.text/.data/.bss/heap/原创 2020-06-13 20:19:49 · 289 阅读 · 0 评论 -
文件操作与目录操作常用函数
文件操作与目录操作常用函数1.stat和lstat需要包含头文件#include <sys/stat.h>#include <unistd.h>statint stat(const char* path, struct stat* buf);参数:path:文件路径buf:(传出参数)存放文件属性返回值成功:0失败:-1,errnolstat与stat的区别在于:lstat不会穿透软链接而stat会穿透软连接应用:获取文件原创 2020-06-13 20:15:31 · 332 阅读 · 0 评论 -
文件操作相关函数介绍及使用
文件操作相关函数介绍及使用1.open/close函数需包含的头文件:#include <unistd.h>#include <fcntl.h>open:int open(const char* pathname, int flags);int open(const char* pathname, int flags, mode_t mode);常用参数flags:O_RDONLY 只读、O_WRONLY 只写、O_RDWR 读写、O_APPEND原创 2020-06-13 20:00:14 · 1727 阅读 · 0 评论 -
进程基本概念
进程相关概念1.程序与进程区别程序:死的,只占用磁盘空间进程:活的,运行起来的程序占用内存、CPU等系统资源2.内存映射示意图3.进程控制块内容*进程id,每一个进程有独一无二的进程id*进程的状态,就绪、停止、挂起、运行等进程切换时需要保存和恢复的一些CPU寄存器描述虚拟地址空间的信息描述控制终端的信息*当前工作目录umask掩码*文件描述符,包含很多指向file结构体的指针*和信号相关的信息*用户id和组id会话和进程组进程可以使用的资源上限...原创 2020-06-13 19:39:18 · 230 阅读 · 0 评论 -
进程相关函数及使用
进程相关函数及使用1. fork函数用途:用于生成子进程原型:pid_t fork(void);返回值:父进程中:返回生成的子进程pid子进程中:0表示成功,-1表示失败,如果失败就不会创建子进程2. getpid与getppid用途:获取进程pid原型:pid_t getpid(void); //获取当前的进程号pid_t getppid(void); //获取父进程号返回值:对应的pid号3. 进程共享相同:全局变原创 2020-06-13 19:37:54 · 386 阅读 · 0 评论 -
Linux基本知识及常用指令
Linux基本知识及常用指令1.Linux系统目录bin: 存放二进制可执行文件boot: 存放开机启动程序dev: 存放设备文件home:存放用户etc: 用户信息和系统配置文件lib: 库文件root: 管理员宿主目录usr: 用户资源管理目录2.Linux系统文件类型普通文件: -目录文件: d字符设备文件: c块设备文件: b软连接: l管道文件: p套接字: s(总共有原创 2020-06-13 18:47:35 · 945 阅读 · 0 评论 -
进程间通信方法(IPC)
进程间通信方法(IPC)1.概念IPC指的是InterProcess Communication,进程间的通信需要借助操作系统提供的特殊方法,如文件、管道、信号、共享内存、消息队列、套接字、命名管道等等。进程间通信方式对比:管道:使用最简单信号:开销最小共享映射区:无血缘关系本地套接字:最稳定2.管道管道的特质:本质是一个伪文件由两个文件描述符引用,一个表示读端,一个表示写端规定数据从管道的写端流入,从读端流出管道的原理:管道实现为内核使用环形队列机制,原创 2020-06-13 18:39:56 · 479 阅读 · 0 评论 -
静态库和动态库简介
静态库和动态库简介1.静态库特点:通过牺牲空间而换来了效率,占用更大的存储空间而有更高的效率使用流程:1)将.c文件生成.o文件gcc -c + c文件 + -o + o文件2)使用ar工具制作静态库ar rcs libxxxxx.a + 静态库材料(静态库的命名规则是固定的)3)编译静态库到可执行文件中gcc + c文件 + 静态库名 + -o + 可执行文件名2.动态库特点:动态库加载到内存后,动态库中的函数有地址了,引用的动态库函数才有地址1)将.c文件生成.o文件gc原创 2020-06-13 18:19:38 · 215 阅读 · 0 评论 -
vim的简单使用
vim的简单使用1.切换模式i 在光标左侧输入正文I 在光标所在行的行首输入正文a 在光标右侧输入正文A 在光标所在行的行尾输入正文o 在光标所在行的下一行增添新行O 在光标所在行的上一行增添新行2.跳转跳转到指定行: XXG(命令模式),:XX(末行模式)跳转到首行: gg(命令模式)跳转到末行: G(命令模式)自动化格式化程序:gg=G(命令模式)大括号对应: %(命令模式)跳转到行首:原创 2020-06-13 18:17:23 · 917 阅读 · 0 评论 -
gdb调试工具和makefile的简单使用
gdb调试工具和makefile的简单使用1.gdb调试方法1)-g:使用该参数编译可执行文件,得到调试表2)gdb + 可执行文件2.gdb常用参数list: list n 列出第n行源码b: b n 在第n行设置断点r: r 运行程序n: n 下一条指令(越过函数)s: s 下一条指令(进入函数)p: p x 查看x变量的值continue: 继续执行断点后续指令quit: 退原创 2020-06-13 18:16:17 · 324 阅读 · 0 评论 -
gcc简单使用
gcc使用1.gcc四步骤预处理: gcc -E → xx.i功能:展开宏文件和头文件,替换条件编译,删除注释、空行和空白编译: gcc -S → xx.s功能:检查语法规范,消耗的时间和系统资源最多汇编 gcc -c → xx.o功能:将汇编指令翻译成机器命令链接 gcc → xx.out功能:数据段合并和地址回填2.gcc常用选项指定头文件所在目录位置: -I(这里是大写的i,表示inc原创 2020-06-13 18:12:46 · 207 阅读 · 0 评论