
linux 学习笔记
文章平均质量分 80
_Jxyz
这个作者很懒,什么都没留下…
展开
-
linux中动态库和静态库
可重定位目标文件以一种特定的方式打包成一个单独的文件,并且在链接生成可执行文件时,从这个单独的文件中“拷贝”它自己需要的内容到最终的可执行文件中。这个单独的文件,称为静态库。linux中通常以.a(archive)为后缀使用:-lm : 使用用到系统中的静态库libm.alm放在main.o的前面,发生错误:必须把 -lm放在main.o的后面的原因放在最后时解析过程如下:将-lm放到main.o 前面使用反汇编查看 :_exp函数也在main二进制文件中,函数调用的时候直接调用动态原创 2022-08-02 23:55:40 · 431 阅读 · 1 评论 -
linux 文件操作 文件属性 - stat,lstat,fstat
stat()/lstat()/fstat函数功能获取文件属性定义函数函数原型: int stat(const char *pathname, struct stat *buf); int lstat(const char *pathname, struct stat *buf); int fstat(int filedes, struct stat *buf);函数返回值:成功为:0失败为:-1 struct stat { dev_t原创 2022-05-31 00:12:16 · 204 阅读 · 0 评论 -
linux 文件操作 标准库 IO编程学习笔记
fopen函数原型FILE *fopen(const char *filename, const char *mode)filename : 文件名称mode 模式 :模式说明“r”打开一个用于读取的文件。该文件必须存在。“w”创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。“a”追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。“r+”打开一个用于更新的文原创 2022-05-29 17:26:44 · 199 阅读 · 0 评论 -
linux应用编程 open函数
open函数头文件#include <fcntl.h>函数原型int open(const char * pathname, int flags);int open(const char * pathname, int flags, mode_t mode);参数:pathname:文件路径flags:O_RDONLY 以只读方式打开文件O_WRONLY 以只写方式打开文件O_RDWR 以可读写方式打开文件.上述三种旗标是互斥的, 也就是不可同时使用, 但可与原创 2022-05-28 00:17:54 · 955 阅读 · 2 评论 -
linux 学习笔记 - 重定向
重定向> 输出重定向< 输入重定向>> 输出追加重定向内核当中的数据结构文件描述符表文件表项i节点dup和dup2#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);返回 : 错误返回-1,成功返回新的文件描述符功能 : 复制文件描述符当调用dup函数时,内核在进程中创建一个新的文件描述符,此描述符是当前可用文件描述符的最小数值,这个文件描述符原创 2022-04-26 00:07:49 · 747 阅读 · 0 评论 -
linux 权限(suid、sgid、SBIT粘着位)
1. linux权限Linux 系统中采用三位十进制数表示权限,如0755, 0644.ABCDA - 0, 表示十进制B-用户C-组用户D-其他用户1.1 数值对应的权限0 (no excute , no write ,no read)1 excute, (no write, no read)2 write4 read1+2 = 3 write excute1+4 = 5 read excute2+4 = 6 write read1+2+4 = read w原创 2022-04-23 22:44:01 · 1420 阅读 · 0 评论 -
linux进程间通信 -信号量
信号量信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享由于信号量只能进行两种操作等待和发送信号,即P(sem)和V(sem)他们的行为是这样的:P(sem):如果sem的值大于零,就给它减1;如果它的值为零,就挂起该进程的执行V(sem):如果有其他进程因等待s原创 2022-04-18 00:36:42 · 966 阅读 · 0 评论 -
linux进程间通信 - 共享内存(shm)
共享内存顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,原创 2022-04-17 23:45:59 · 2058 阅读 · 1 评论 -
linux 进程通信 - 消息队列
消息队列消息队列亦称报文队列,也叫做信箱。是Linux的一种通信机制,这种通信机制传递的数据具有某种结构,而不是简单的字节流。消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构向消息队列中写数据,实际上是向这个数据结构中插入一个新结点;从消息队列汇总读数据,实际上是从这个数据结构中删除一个结点消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法消息队列也有管道一样的不足,就是每个数据块的最大长度是有上限的,系统上全体队列的最大总长度也有一个上限创建消息队列原创 2022-04-17 23:08:00 · 1503 阅读 · 0 评论 -
linux ftok函数的使用
ftok API#include <sys/types.h>#include <sys/ipc.h>key_t ftok(const char *pathname, int proj_id);ftok根据路径名,提取文件信息,再根据这些文件信息及project ID合成key,该路径可以随便设置。该路径是必须存在的,ftok只是根据文件inode在系统内的唯一性来取一个数值,和文件的权限无关。proj_id是可以根据自己的约定,随意设置。这个数字,有的称之为proj原创 2022-04-17 18:21:20 · 628 阅读 · 0 评论 -
Makefile 学习笔记(二) Makefile的使用
脚本语言:MakefileLinux C/C++ 必须要使用的脚本原创 2021-07-25 12:45:19 · 210 阅读 · 0 评论 -
shell脚本入门
1. shell2. shell脚本的写法shell脚本是一个村文本文件命令从上而下,一行一行的开始执行.shell脚本扩展名为.sh ,shell脚本第一行一定要为#!/bin/bash表示使用bash3 shell脚本语法3.1 交互shell脚本read 输入echo 输出$变量名 读取变量3.2 shellshell 仅支持整形、数值计算使用$((表达式)).3.4 test命令test命令用于查看文件是否存在、权限等信息.可以进行数值,字符,文件三方面的测试.&原创 2020-11-29 17:50:41 · 534 阅读 · 0 评论 -
ubuntu压缩解压缩
一、Linux下常用的压缩格式Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。二、Windows下7ZIP软件的安装因为Linux下很多文件是.bz2,.gz结尾的压缩文件,因此需要在windows下安装7ZIP软件。三、gzip压缩工具.gzip工具负责压缩和解压缩.gz格式的压缩包。gzip xxx //压缩gzip -d xxx.gz //解压缩gzip对文件夹进行压缩gzip -r xxx //对文件夹进行压缩gzip -rd xxx.gz原创 2020-11-23 22:38:26 · 221 阅读 · 0 评论 -
ubuntu 磁盘管理
一、Ubuntu磁盘文件/dev/sd*文件,此类文件是磁盘设备文件,并不能直接访问磁盘,必须要将磁盘挂载到某一个目录下才可以访问。/dev/sdb和/dev/sdb1是U盘的设备文件。/dev/sdb表示U盘,/dev/sdb1表示U盘的第一个分区。二、磁盘和目录的容量查询命令df:列出文件系统的整体磁盘使用量。主要查看个文件系统的使用量,du:查看单个文件的大小。二、磁盘挂载与卸载,分区和格式化、1、磁盘的挂载和卸载mount和umount命令mount 挂载的时候中文乱码的时候是原创 2020-11-23 21:44:28 · 334 阅读 · 0 评论 -
Ubuntu 文件系统结构
三、绝对路径和相对路径“.“:当前木记录“…”:上一级目录"~”:home目录原创 2020-11-23 21:20:05 · 238 阅读 · 0 评论 -
shell学习入门
1、linux 下面的换行符是"\n" ,windows 下面的换行符是"\r\n"shell 的运行方法:第一种 ./xx.sh 需要有可执行权限第二种 source xx.sh第三种 bash xx.sh2.1 shell 程序hello world 解析shell 第一行一般都是#!/bin/sh这行话以#!开始后面+一个pathname ,这行话的意思就是指定shell程序执行时被哪个解释器执行,#!/bin/sh的意思就是这个设立了将被当前系统中/bin目录下面sh可执行程序执行除原创 2020-07-20 23:40:45 · 739 阅读 · 0 评论