![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux学习
文章平均质量分 86
大纲:命令,vim,gcc,编译工具,生成代码,调试,库makefile,系统编程
文件系统:文件属性,文件内容,万物皆文件(不在内存中的是文件,鼠标键盘耳机都可以看作键盘),IO多路复用(即时聊天),进程(特点(怎么分配资源),多进程(创建和管理),),进程间通信(管道,共享内存,信号量,消息队
leaoleao沄
这个作者很懒,什么都没留下…
展开
-
linux-信号-信号产生时机-更改信号默认行为signal-sigaction-sa_mask-raise-alarm信号-时钟getitimer-setitimer
当三个信号(非实时信号)要进入pending,第一个信号会被pending存储,pending标识1,当第二第三信号要进入pending,由于pending是位图,只能标识1个信号,所以后面的信号丢失;当信号递送时进入回调函数,如果在函数运行过程中,也就是递送没有结束时,标准输入流的数据会被留在输入缓冲区,等到递送完成后重启的系统调用使用该数据;当进程递送信号A,把信号A本身加入mask,之后有A信号产生;mask:阻塞集合;产生信号(来源)-------时间(可变)---------递送信号(目标进程)原创 2024-07-23 15:29:43 · 572 阅读 · 0 评论 -
Linux-进程间通信-管道-有名管道-匿名管道(父子进程popen,pipe)-基于阻塞的同步-共享内存(system V(命令:)(函数:shmget)(shmat)(shmdt)(ipcrm))
IPC(Inter-Process Communication,进程间通信)是操作系统中多个进程或线程间进行数据交换或通信的机制。IPC的参数宏主要用于控制IPC对象的创建、访问、删除等操作。原创 2024-07-17 11:18:35 · 770 阅读 · 0 评论 -
linux-二元信号量和计数信号量-生产者消费者模型以及用二元信号量实现-死锁(2)-侠义消息队列(fifo)-proc文件系统
二元信号量和计数信号量在嵌入式系统和多任务环境中都是重要的同步机制,用于控制对共享资源的访问。原创 2024-07-19 13:18:35 · 779 阅读 · 0 评论 -
linux-共享内存-shmget-shmat-shmctl-shmdt-物理内存虚拟内存转换-页表-页框-分级页表(局部性原理)-信号量(计数二元)semget-semctl-semop-time;
定义:信号量是一种取值为整数的变量,表示可用的临界资源数目或等待资源的进程数。进程通过调用PV原语(即Wait和Signal操作,也称为P操作和V操作)来改变信号量的值,从而实现对进程间同步或互斥的控制。类型整型信号量:信号量是整数,用于记录资源的数量或等待的进程数。记录型信号量:除了整数值外,还包含一个进程等待队列,用于记录阻塞在该信号量上的各个进程的标识。二进制信号量:只允许信号量取0或1值,常用于实现互斥锁。timeval:用于表示时间。// 秒数// 微秒数timezone。原创 2024-07-18 17:17:57 · 1062 阅读 · 0 评论 -
linux-进程权限-system启动多进程-fork系统调用-exec函数族-wait回收资源-waitpid-进程终止-进程组-会话-守护进程-进程间通信-popen
进程:正在运行的程序(操作系统分配资源的基本单位)程序·:程序(Program)是计算机系统的必备元素,是计算机能识别和执行的指令集合;操作系统管理进程,把task_struct(任务描述符:进程的所有信息),放入双向链表(任务队列),任务队列由操作系统内核管理;uid(用户ID)、euid(有效用户ID)、gid(组ID)和egid(有效组ID)是核心概念,它们与进程执行时的权限级别紧密相关。此外,sticky(粘滞位)是一个与目录权限相关的特殊权限标志,用于控制目录中文件的删除权限。原创 2024-07-15 16:56:46 · 479 阅读 · 0 评论 -
Linux-select同时监听读写-ulimit-select的原理-select的调用流程-select设置超时;
mmap实现的细节与 DMA 的使用是分开的。当通过mmap访问映射的文件或设备时,数据可能通过传统的 I/O 路径(涉及 CPU、内存和 I/O 控制器)进行传输,也可能在某些情况下使用 DMA 来优化性能。但是,这种优化是由操作系统和硬件共同决定的,而不是由mmap系统调用直接控制的。DMA(Direct Memory Access),即直接存储器访问,是一种在计算机系统中允许某些硬件子系统与主存储器(RAM)进行直接数据传输的技术,而无需通过中央处理器(CPU)的干预。原创 2024-06-29 22:25:40 · 1018 阅读 · 1 评论 -
linux-虚拟内存-虚拟cpu-进程pid-ps命令-进程权限-进程相关命令-优先级系统-分时任务
计算机中的程序关于某数据集合上的一次运行活动。原创 2024-07-07 18:24:25 · 864 阅读 · 1 评论 -
linux-内存映射MMAP-lseek-dup-fifo-通信-IO多路复用
让newfd与oldfd指向同一个文件对象;如果newfd已有指向就会自动close;通过把dup2把标准输出的文件描述符改成savefd,再把标准输出的屏幕对象改成文件对象,最后再改回来,把屏幕定向到文件,再恢复;原创 2024-06-28 23:25:10 · 1048 阅读 · 0 评论 -
Linux-cp命令实现-系统调用和函数区别-文件截断-文件空洞
在UNIX文件系统中,文件位移量(offset)可以大于文件的当前长度。当对这样的文件进行写操作时,文件会被“撑大”,并在文件中构成一个空洞(hole)。空洞是文件中没有实际写入数据的部分,由重复的0表示。原创 2024-06-22 23:23:14 · 795 阅读 · 0 评论 -
Linux ls-al命令实现,tree命令实现,不带缓存的文件IO(open,read,write)
stat配合目录流(目录流==链表加指针链表结点目录项dirent)opendir,closedir,readdir。const char *restrict pathname:路径(文件名和路径不完全对等,(文件名在当前目录下才对等))struct stat *restrict statbuf:被调函数通过传入传出参数给主调函数传递信息。传递信息优先用传入传出参数,返回值用于报错。getpwuid:/etc/group:把计算机时间转换为日历时间。用time_t获取时间,返回标准日历时间(带有换行的字符串原创 2024-06-14 19:45:46 · 522 阅读 · 0 评论 -
关于read,write,open时出现的文本文件和二进制文件读写的问题(怎么写入怎么读)
使用read读取文本文件,一般采用字符空间作为缓存,最后输出;使用read读取二进制文件,这里采用整数读取的展示:首先创建文本文件,用write写入i的值到文件中;再通过lseek改变读写一个文件时的读写指针位置,用SEEK_SET把指针设置回起始位置;然后再次把读取到的数据写入整型变量a的地址,直接%d输出。问题1:为什么文本文件要用字符数组,而二进制文件要用变量名的地址呢。问题2:在打开文件对象时,文件是什么格式传输的。问题3:可以通用转化read吗,这样会不会有些麻烦?原创 2024-06-23 14:10:41 · 1003 阅读 · 0 评论 -
linux-makefile,系统编程,文件流(fopen),目录流(opendir)
可以使用反斜杠 \ 调整格式换行。原创 2024-04-09 19:27:06 · 960 阅读 · 0 评论 -
linux_gcc,库文件,gdb,
进入循环断点时,gdb会进入这个断点循环次数,所以需要用到忽略这个断点若干次多次命中循环体中的断点。原创 2024-03-01 21:03:36 · 1627 阅读 · 0 评论 -
Linux server
软件安装:软件源仓库的更新:sudo(提权命令) apt(提apt的权,软件仓库命令) update(更新);9、交互: :w(保存)name.格式;lo节点:回环接口;键盘:编辑模式or 命令交互模式;默认打开命令交互模式;8、nG跳转到第几行;7、R替换模式 一直替换;window ping Server 的ipv4;6、一个字母替换:r(x);3、cd 进入家目录‘’‘’‘’‘’‘删除文件:rm -i (询问删除);rm -r /test(删除目录);LINUX常用命令;原创 2023-07-11 23:09:54 · 80 阅读 · 0 评论 -
linux c语言高级编程
p指针没有初始化,是一个野指针,在内存中是一个随机的值,所以不能赋值,否则非法访问空间出现段错误;堆内存的分配与释放:*malloc(开辟size大小的空间并返回地址)/free;b num(行号);info b (查看断点);编译器根据条件的真假决定是否编译相关代码;//释放p中存的地址对应的空间;恢复执行,退出一行一行执行模式,一次执行完;来访问结构体指针的成员;原创 2023-08-28 16:58:12 · 59 阅读 · 0 评论 -
Makefile
makefile中:rm *.o test;表示移除makefile中所有.o文件和test;利用命令行由依赖文件生产可执行文件,命令行前必须是TAB键;export :把变量传递给子目录的makefile;$(SUBDIRS):执行指定目录下的makefile;make命令的选项及makefile中的隐含规则;创建和使用变量://用变量来代替一个文本字符串;make -i 忽略错误;CHECK_DIR:生成BIN目录;生成文件必须和依赖文件之一相同;不能变量套变量,不然会死循环;@ECHO:打印不提示;原创 2023-08-28 21:03:14 · 32 阅读 · 0 评论 -
linux_磁盘命令,远程拷贝,vim,编译工具链SDK
遇到虚拟机异常退出,会生成配置文件,不确定文件以后是不是还要用的情况下,先改文件名,再启动虚拟机;原创 2023-11-12 21:14:32 · 268 阅读 · 0 评论 -
linux命令和c语言基础
cp :复制 //cp a.c b.c //// cp a.c ../bank.c';查找:/ 查找的字符串 n:继续查找往下;:w file 把当前文件另存为别的文件名;9、交互: :w(保存)name.格式;:范围(省略为当前行)s/str1/str2 当前行替换没有g则默认替换第一个;:,(当前行)$(结尾)s/str1/str2/g(g代表符合的全部替换)原创 2023-08-24 22:15:09 · 38 阅读 · 0 评论 -
linux下c语言的输入输出
/从键盘输入以回车结束的字符串放入字符;//加了数字该函数会自己拆格式;注意:整数输入时空格,table,回车不会被识别;而字符输入会识别,因为ascll码;从键盘读取一个字符,结束输入(ctrl d)或错误返回-1;可以利用循环一个字符一个字符输入;gets不能以空格作为输入结束标志;输入的时候也要写abc加数字;参数:c为字符常量,变量,或表达式;输出字符串,自动换行;scanf("格式字符串",地址表);原创 2023-08-26 21:28:17 · 521 阅读 · 0 评论 -
linux_链接,查找,权限,重定向,打包,正则表达式
一个点表示当前工作目录,两个点表示上一层工作目录;目录的本质:文件(该文件储存目录项,以链表的形式链接,每个结点都是目录项,创建文件相当于把目录项添加到链表中)如果想在一个目录中添加或者删除目录项,需要获取这个目录的写权限;软连接:符号链接,单独的文件里面存储了文件路径,类似于指针,指向目录;硬链接:文件以链表形式存于物理文件系统,虚拟文件系统(VFS)与物理文件系统存在一种映射,上图he目录和点目录指向同一个文件,这种映射情形叫硬链接;原创 2023-11-11 19:21:35 · 661 阅读 · 0 评论 -
linux c语言函数
/运用三个指针,一个记录起始地址,一个存链接后的字符串,一个把自身字符串给存链接的那个字符串;数据类型(函数指针所指向的函数的返回值类型)(*函数指针名称)(参数(与所指向的函数的形参保持一致));数据类型(返回值类型) 函数名称 (参数,参数){语句序列;(2)a.删除一个字符串的空格(运用两个指针,一个处理一个赋值);(1) 数据类型 * 函数名称(参数说明){};//qsort();int add(int a,int b){}//函数。原创 2023-08-28 13:58:00 · 91 阅读 · 0 评论 -
linux-用户,用户子系统用户操作添加删除用户等,文件子系统(路径),pwd,cd等文件系统操作
内核(kernel):(管理硬件资源(cpu,内存,外部设备),文件管理,内存管理,进程调度,网络通信,硬件驱动;为上层应用软件提供一个运行环境;系统调用(system calls):内核对上层应用程序提供的接口;库函数(library routines);对系统调用进行包装(方便程序员使用);shell:(命令解析器,shell本质是一个程序,解析命令,执行命令,执行脚本(script,命令的集合))上层应用程序可以通过shell,shell访问内核完成调用;原创 2023-11-05 17:57:17 · 193 阅读 · 1 评论 -
Linux下c语言的数据类型、常量、变量及运算符
gcc -E main.c -o main.i //打开i文件可以看到头文件的位置以及头文件中的数据类型处理文件的方式,可以借此查看头文件的编译方式,尝试自己写原生头文件;register称为寄存器类型(>(右移)、原创 2023-08-26 16:46:48 · 133 阅读 · 0 评论