linux系统编程
文章平均质量分 95
aaaaaaaaaaaaa
da..
欢迎进群交流!please私
展开
-
linux系统编程(一)linux命令解析
察看当前系统下有哪些shell:察看当前系统正在使用的shell1.4 历史记录1.5 主键盘快捷键2. 目录和文件2.1 类Unix系统目录结构2.2.1 相对路径和绝对路径pwd 查看当前所在目录ll 竖排显示目录项和详细信息,ls -l的缩写显示dirname本身的详细信息递归查看目录递归展示详细信息2.7 mkdir2.9 touch删除文件:删除目录:重命名:移动文件:拷贝文件:拷贝原创 2022-08-28 17:44:11 · 591 阅读 · 0 评论 -
Linux系统编程 (二)linux下vim的常用命令
vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。vi没有菜单,只有命令,且命令繁多。i有三种基本工作模式:+ 命令模式+ 文本输入模式+ 末行模式。...原创 2022-08-29 15:50:15 · 249 阅读 · 0 评论 -
linux系统编程(三)gcc常用技巧与静态库与动态库制作
ldconfig就是实现这一功能的工具,其缺省读取/etc/ld.so.conf文件,对所有共享库按照一定规范建立符号连接,然后将信息写入/etc/ld.so.cache。从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快1-5%,但实际上可能并非如此。共享库的创建比较简单,基本有两步。建议库开发人员创建共享库,比较明显的优势在于库是独立的,便于维护和更新;使用gcc的-l选项来指定静态库,使用-L参数来指定库文件的搜索路径。然后更新.a文件的索引,使之包含新加入的.o文件的内容(ar的参数s)。.原创 2022-08-31 20:43:04 · 450 阅读 · 0 评论 -
linux系统编程 (四) gdb调试与makefile
Makefile 就是一个脚本文件:脚本文件就是把一系列的命令放到一个文本里批量执行。命名:makefile或Makefile一个规则目标:依赖条件(一个tab)命令1.目标的时间必须晚于依赖条件的时间,否则,更新目录2.依赖条件如果不存在,找寻新的规则去产生依赖两个函数src=$(wildcard ./*.c):匹配当前目录下的所有.c文件。将文件名组成列表,赋值给变量src。原创 2022-09-01 19:32:36 · 727 阅读 · 0 评论 -
linux系统编程(五)针对linux系统中文件的IO操作
你和我的地址簿都有1、2、3、4页,但是每页里面的实际内容是不一样的,我的地址簿第1页写着3你的地址簿第1页写着4,对于你、我自己来说都是用第1页(虚拟),实际上用的分别是第3、4页(物理),不冲突。内核用的是3G以上的1G虚拟内存地址, 其中896M是直接映射到物理地址的,128M按需映射896M以上的所谓高位内存。其实我们讲的每个进程都有4G虚拟地址空间,讲的都是“可以寻址”4G,意思是虚拟地址的0-3G对于一个进程的用户态和内核态来说是可以访问的,而3-4G是只有进程的内核态可以访问的。原创 2022-09-07 09:35:47 · 373 阅读 · 0 评论 -
linux系统编程(六) linux文件系统的操作
文件系统是,一组规则,规定对文件的存储及读取的一般方法。其本质为结构体,存储文件的属性信息。目录项,其本质依然是结构体,重要成员变量有两个 {文件名,inode,…当进程结束运行时,所有该进程打开的文件会被关闭,申请的内存空间会被释放。工作目录:“./”代表当前目录,指的是进程当前的工作目录,默认是进程所执行的程序所在的目录位置。目录设置黏住位:若有w权限,创建不变,删除、修改只能由root、目录所有者、文件所有者操作。但是inode被删除以后,对应磁盘允许被替换,这样就会导致,文件真正可能被删除。原创 2022-09-11 19:23:28 · 859 阅读 · 0 评论 -
linux系统编程(七)进程
一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然而通常我们执行当前目录下的程序a.out却需要提供完整的路径名./a.out,这是因为PATH环境变量的值里面包含了ls命令所在的目录/bin,却不包含a.out所在的目录。其中保存该进程的退出状态。进程,是一个抽象的概念,与操作系统原理联系紧密。原创 2022-09-11 12:38:00 · 497 阅读 · 0 评论 -
linux系统编程(八)进程间通信
任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如果有指向管道读端的文件描述符没关闭(管道读端引用计数大于0),而持有管道读端的进程也没有从管道中读数据,这时有进程向管道写端写数据,那么在管道被写满时再次write会阻塞,直到管道中有空位置了才写入数据并返回。原创 2022-09-11 12:52:37 · 493 阅读 · 0 评论 -
linux系统编程(九) 信号
当注册了某个信号捕捉函数,捕捉到该信号以后,要调用该函数。A给B发送信号,B收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行。如:捕捉到信号后,在执行捕捉函数期间,不希望自动阻塞该信号,可将sa_flags设置为SA_NODEFER,除非sa_mask中包含该信号。不存在编号为0的信号。进程组:每个进程都属于一个进程组,进程组是一个或多个进程集合,他们相互关联,共同完成一个实体任务,每个进程组都有一个进程组长,默认进程组ID与进程组长ID相同。原创 2022-09-11 13:10:09 · 759 阅读 · 0 评论 -
linux系统编程(十)守护进程、线程
LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下)进程:独立地址空间,拥有PCB线程:有独立的PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。独居(进程);合租(线程)。Linux下: 线程:最小的执行单位进程:最小分配资源单位,可看成是只有一个线程的进程。原创 2022-09-11 13:27:28 · 518 阅读 · 0 评论 -
linux系统编程(十一)线程同步(完结)
由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住。当T1再次获得cpu继续 从失去cpu的位置向后写入1,当执行结束,内存中的100字节,既不是全1,也不是全0。如直接使用mutex,除了生产者、消费者之间要竞争互斥量以外,消费者之间也需要竞争互斥量,但如果汇聚(链表)中没有数据,消费者之间竞争互斥锁是无意义的。3.读写锁是“读模式加锁”时, 既有试图以写模式加锁的线程,也有试图以读模式加锁的线程。但,并没有强制限定。原创 2022-09-11 13:56:40 · 376 阅读 · 0 评论