![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux学习
醉美遇见你倾城
菜鸟一只
展开
-
Linux笔记(1)-基础知识
命令解析器shell -- Unix操作系统bash -- Linux操作系统本质:根据命令的名字,调用对应的可执行程序常用快捷键history -- 查看用户输入过的历史命令 使用Ctrl+p 可以向上滚动选择命令 Ctrl+n 向下滚动选择(上下的方向键)Ctrl + b -- 命令行光标向前移...原创 2019-04-13 22:09:46 · 112 阅读 · 0 评论 -
Linux笔记(17)-进程间通信(管道)
IPC:InterPocess Communication(进程间通信)1. 进程间通信常用方式: a. 管道 -- 简单 b. 信号 -- 系统开销小 c. 共享映射区 -- 有无血缘关系的进程间都可以通信 d. 本地套接字 -- 稳定 除此之外还可以使用文件等来进行通信...原创 2019-06-10 10:50:01 · 157 阅读 · 0 评论 -
Linux笔记(18)-管道操作与fifo文件
管道的读写行为1. 读操作: a. 有数据可以读 read(fd) -- 正常读取,返回读取的字节数 b. 无数据可以读 (1) 如果读写两端被关闭 read会解除阻塞,返回0。相当是读文件读到了尾部 (2) 如果没有全部关闭 read将阻塞2. 写操作: a. 读端被关...原创 2019-06-10 11:28:10 · 2020 阅读 · 0 评论 -
Linux笔记(19)-进程间通信(内存映射区)
内存映射区:将磁盘上的数据映射到内存上,于是可以不通过io文件,而是操作内存即可操作文件1. 创建内存映射区 -- mmap函数 void *mmap(void *addr, //映射区首地址,传NULL,由系统自动识别 size_t length, //映射区的大小,一般为文件的大小(实际上分配的是4K的整数倍),不能为0 ...原创 2019-06-22 23:43:54 · 276 阅读 · 0 评论 -
Linux笔记(20)-信号基础
信号初步认识1. 特点: 简单 - 用一个值表示 携带信息少 - 仅一个值 在特定场景中使用2. 信号的状态: 产生 --> 未决状态<等待进程处理> --> 递达<被处理>3. 产生信号的方式: a. 键盘:CTRL + c b. 命令:kill c. 系统函数:kill d. 软条件:...原创 2019-06-24 19:57:53 · 158 阅读 · 0 评论 -
Linux笔记(21)-定时器
alarm函数:设置定时器。1. 特性 a. 每个进程只有一个定时器<多个alarm函数只会刷新该定时器> b. 定时器使用的时自然定时法 c. 定时器不受进程状态影响2. 函数原型: unsigned int alarm(unsigned int seconds);3. 参数: seconds:单位为秒 当到达设置的时间后,函...原创 2019-06-24 19:58:19 · 146 阅读 · 0 评论 -
Linux笔记(22)-信号集
未决信号集和阻塞信号集<pcb中>1. 未决信号集: 待处理的信号的集合<索引表示信号,存储的是信号的状态[0或1]。0表示该信号在集合中>2. 阻塞信号集: 需要阻塞的信号的集合<索引表示信号,存储的是信号的状态[0或1]。0表示该信号在集合中>3. 当发出一个信号后,信号处于未决信号集中等待处理。然后读取阻塞信号集中该信号索引的位置...原创 2019-06-24 19:58:43 · 113 阅读 · 0 评论 -
Linux笔记(23)-守护进程
守护进程(也称服务)的概念1. 守护进程是一个后台服务进程2. 独立于控制终端 -- 即关闭该终端后仍在后台运行3. 周期性执行某任务4. 不受用户登陆注销影响5. 一般采用以d结尾的名称进程组1. 组长 进程组中的第一个进程为组长 进程组的ID为组长的ID -- 即pid == gpid,则该进程为组长会话1. 创建一个会话注意事项 a....原创 2019-06-29 21:51:44 · 126 阅读 · 0 评论 -
Linux笔记(24)-线程基础
线程基本知识1. 创建线程后,地址空间不会发生改变2. 同时该创建线程的进程退化称为主线程3. 创建出的子线程和主线程公用地址空间4. 主线程和子线程有各自独立的pcb 子线程pcb从主线程拷贝而来5. 同一进程下的多个线程之间共享除栈数据外的其他用户区数据。 栈区会平均划分。线程之间可以通过全局变量和堆通信6. 在Linux下,线程称为轻量级进程。对于内核而言,认...原创 2019-06-29 21:52:29 · 160 阅读 · 0 评论 -
Linux笔记(25)-线程同步(互斥锁)
数据混乱1. 例如: 两个线程对同一全局变量数数操作时,产生部分数据丢失 a. 线程1:number从0数到100时,数据还没有从cpu写入内存,但此时丢了cpu资源 b. 线程2:此时抢到cpu,但number此时任为0开始数,当数到200时,cpu写到内存,然后退出cpu c. 线程1:此时抢到cpu,但number写入时为保存在线程1中的100值,此时1...原创 2019-06-29 21:52:56 · 115 阅读 · 0 评论 -
Linux笔记(26)-线程同步(读写锁)
读写锁1. 读写锁数据类型: pthread_rwlock_t lock;2. 读写锁状态: a. 读锁状态:对内存做读操作 b. 写锁状态:对内存做写操作3. 读写锁的特性: a. 线程1加读锁后,又来了多个线程,都做读操作,后来的线程都能加读锁 -- 即读时共享 b. 线程1加写锁后,又来了多个线程,都做读操作,则后来的线程都会...原创 2019-06-29 21:53:33 · 131 阅读 · 0 评论 -
Linux笔记(27)-线程同步(条件变量)
读写锁,互斥锁并不是任何时候都能阻塞线程运行1. 假设有线程操作如下: a. 链表头节点Node *head = NULL b. wile(head == NULL) { //当链表为空时,希望线程阻塞 //等待链表中有节点时再执行下面代码 } //链表中不为空时执行代码段 ...原创 2019-06-29 21:54:05 · 122 阅读 · 0 评论 -
Linux笔记(28)-线程同步(信号量)
信号量(信号灯)1. 信号量: a. 包含在头文件semaphore.h中 b. 是一种加强版的互斥锁 c. 信号量类型:sem_t sem;2. 互斥锁与信号量 a. 互斥锁的状态只能是0或1两种状态:只能一个线程同时访问共享资源 c. 信号量可以设置value:设置若干个线程同时访问共享资源操作函数1. 初始化信号量 sem_i...原创 2019-06-29 21:54:38 · 131 阅读 · 0 评论 -
Linux笔记(16)-孤儿进程和僵尸进程
孤儿进程1. 父进程创建子进程后,父进程先结束,子进程任然存在 -- 子进程称为孤儿进程2. 孤儿进程会被系统init进程(不同系统的名称不同)领养,init进程变为孤儿进程的父进程3. 领养操作是为了释放子进程占用的系统资源 a. 进程结束后,能够自行释放用户区空间 b. 进程释放不了pcb,必须由父进程释放,因此有init来释放僵尸进程1. 父进程创建子...原创 2019-06-10 10:49:35 · 106 阅读 · 0 评论 -
Linux笔记(15)-exec函数族
exec函数族作用1. 使父子进程进行互不相干的操作2. 替换将fork后的地址空间的源代码,即.text字段3. 替换的内容必须是一个可执行程序,即将新的可执行程序传递给exec函数,由函数转换为.text字段填充回去4. 可以在一个运行的程序A中,调用另一个可执行程序Bexecl函数:执行指定路径下的应用程序1. 函数原型: int execl(const cha...原创 2019-05-27 11:28:57 · 99 阅读 · 0 评论 -
Linux笔记(14)-进程控制
创建子进程:fork函数1. 函数原型: int fork();2. 函数作用: 一个进程的执行时,系统将分配地址空间给进程。 在进程执行过程中,如果调用fork函数创建一个子进程,子进程为父进程的拷贝。 二者用户区数据是一样的。 内核区中进程ID不一样。3. 返回值 调用fork函数后,子进程拷贝父进程而创建,因此用户区代码是一样的。 ...原创 2019-05-26 19:37:07 · 96 阅读 · 0 评论 -
Linux笔记(2)-基本命令
文件和目录操作1. 查看目录 (1) tree命令 该命令是一个软件,需要额外安装 内核不同安装命令不同Ubuntu下为:sudo apt-get install <软件名> CentOS下为:sudo yum -y install <软件名...原创 2019-04-13 22:10:09 · 212 阅读 · 0 评论 -
Linux笔记(3)-常用知识点
U盘的挂载1. 默认情况下,Linux识别的设备自动挂载到/media目录下,CentOS版本挂载在/run/media目录下2. 查看设备信息 (1) 查看挂载的U盘设备名称 sudo fdisk -l 可以查看挂载的U盘在Linux下的设备编号 (2) 移动挂载的设备 sudo mount <devNumber> ...原创 2019-04-13 22:10:31 · 173 阅读 · 0 评论 -
Linux笔记(4)-辅助管理
Linux下进程管理常用命令1. who -- 查看用户2. whoami -- 查看当前用户3. ps ps a 查看当前系统下的所有用户 ps au 查看用户更加详细的信息 ps aux 查看没有终端的应用程序4. kill kill -l ...原创 2019-04-13 22:10:49 · 94 阅读 · 0 评论 -
Linux笔记(5)-服务器配置
ftp服务器:用于文件的上传和下载 – 如果向下载文件目录,则需要将目录打包才能下载1. 服务器搭建 -- 安装vsftpd软件 (1)服务器端: a. 修改配置文件:设置客户端用户的权限 -- /etc/vsftpd.conf write_enable, anon_root, anonymous_enable, anon_upload_e...原创 2019-04-13 22:11:12 · 110 阅读 · 0 评论 -
Linux笔记(6)-Vim常用命令
Linux手册终端输入: man man可以显示Linux自带手册,共分为9个章节 1. 可执行程序或shell命令 2. 系统调用(内核提供的函数) 3. 库调用(程序库中提供的函数) 4. 特殊文件(常位于/dev) 5. 文件格式和规范(例如:/etc/passwd) 6. 游戏 7. 杂项 8. 系统管理命令...原创 2019-04-13 22:11:30 · 116 阅读 · 0 评论 -
Linux笔记(7)-gcc常用命令
Linux下使用gcc/g++ 四步编译链接:C/C++文件的执行过程,由原始cpp文件输入,经过预编译器,对头文件和宏定义进行展开,生成.i文件;再经过编译器,生成汇编文件.o类型;而后经过汇编器,生成二进制.o文件;最后经过链接器生成可执行文件.exe。//在Linux下,分别使用带参数的g++命令对cpp文件进行分步生成//index.cppg++ -E index.cpp -o ...原创 2019-04-22 20:21:15 · 240 阅读 · 0 评论 -
Linux笔记(8)-gdb调试与makefile编写
要使用gdb调试,首先需要生成带有调试信息的可执行程序,即带有-g的gcc/g++指令给程序打断点1. 普通断点 gdb下使用 break(b) <lineNum> --> b 22 <程序执行到22行时停下>2. 条件断点 gdb下使用 break(b) <lineNum> <断点有效条件> ...原创 2019-04-22 20:21:50 · 284 阅读 · 0 评论 -
Linux笔记(9)-c常用库函数
C库IO函数的工作流程常用的C库IO函数有:fopen, fclose, fwrite, fread, fgets, fputs, fscanf, fprintf, fseek, fgetc, fputc, ftell, feof, flush...其中fopen函数返回一个FILE*类型的文件指针,其他函数对该文件指针进行操作1. FILE*类型细化 (1) 文件描述符(整型值...原创 2019-05-26 19:35:13 · 336 阅读 · 0 评论 -
Linux笔记(10)-Linux文件操作常用函数
stat函数:获取文件的详细属性信息1. 文件名2. 大小3. 块 --> 所占用块数4. I/O块5. 文件类型6. 设备7. Inode --> 索引节点Inode中保存的是文件数据的相关信息(文件属性的描述信息) Inode号是唯一的,表示不同文件。Linux内部访问文件是通过Inode号...原创 2019-05-26 19:35:38 · 169 阅读 · 0 评论 -
Linux笔记(11)-Linux目录操作常用函数
重命名函数:rename1. 函数原型: int rename(const char *oldPathName,const char *newPathName);修改当前的工作目录:chdir1. 函数原型: int chdir(const char *dirPath); //该函数是改变程序执行过程中的工作路径,与终端的cd命令要区别获取当前目录的路...原创 2019-05-26 19:36:02 · 127 阅读 · 0 评论 -
Linux笔记(12)-文件描述符相关操作
dup和dup2函数:复制文件描述符1. 文件描述符表(fd的标号),其中0,1,2默认被占用。2. 复制文件描述符指:复制后产生的两个文件描述符可以操作同一个文件3. 函数原型: a. int dup(int oldfd); dup会将oldfd复制一份到当前文件描述符表中未被占用的最小的文件描述符上 -- 返回值为复制的文件描述符 ...原创 2019-05-26 19:36:26 · 197 阅读 · 0 评论 -
Linux笔记(13)-进程基础学习
程序与进程程序:是一个二进制文件,占用的是磁盘空间进程:一个允许的程序,其所有数据都在内存中,需要占用各种系统资源并行与并发1. 并发:不是针对时间点,而是一个时间段的概念。并发量指的是一个时间段内处理的消息的数量。确切的时刻只有一个程序在执行,而一个时间段内程序在不断轮循执行。<单核CPU>2. 并行:某个时间点有多个程序在同时执行。<多核CPU>...原创 2019-05-26 19:36:46 · 82 阅读 · 0 评论 -
Linux笔记(29)-进程同步
进程间同步方式1. 信号量: sem_init函数中参数int pshared设置为1<PTHREA_PROCESS_SHARED>2. 互斥锁<互斥量>: 创建互斥锁时设置互斥锁的属性参数pthread_mutexattr_t *attr a. 初始化属性: pthread_mutexattr_init函数 b. 销...原创 2019-06-29 21:55:16 · 139 阅读 · 0 评论