Linux基础编程
Disappear_XueChao
这个作者很懒,什么都没留下…
展开
-
45.目录操作相关的函数
6. 删除文件或者目录 int remove(const char *pathname); 参数:文件或者目录的相对路径或绝对路径原创 2018-06-27 20:57:35 · 155 阅读 · 0 评论 -
35.perror和errno
errno:全局变量,不同的值对应不同的错误信息。perror:打印错误信息。例如:当open、read、write、lseek函数调用失败的时候,errno会被设置为对应的值,而perror会根据不同的errno来打印不同的错误信息。...原创 2018-06-22 16:59:27 · 292 阅读 · 0 评论 -
34.read和write函数
原创 2018-06-21 23:55:45 · 292 阅读 · 0 评论 -
33.Open函数的使用
原创 2018-06-21 23:53:18 · 181 阅读 · 0 评论 -
32.ulimit命令查询限制
命令:ulimit 选项选项:-a:显示当前系统所有的limit资源信息。 -H:设置硬资源限制,一旦设置不能增加。-S:设置软资源限制,设置后可以增加,但是不能超过硬资源设置。-c:最大的core文件的大小,以 blocks 为单位。-f:进程可以创建文件的最大值,以blocks 为单位.-d:进程最大的数据段的大小,以Kbytes 为单位。-m:最大内存大小,以Kbytes为单位。-n:查看进...原创 2018-06-13 11:11:48 · 543 阅读 · 0 评论 -
31.文件描述符表
原创 2018-06-13 10:43:38 · 234 阅读 · 0 评论 -
30.虚拟地址空间
1.虚拟内存:电脑的物理内存不够用的时候,会从硬盘上分出一段空间,以进行数据的交换,充当临时内存的作用。虚拟地址空间也是一样,并不是物理内存上的空间,是磁盘上的空间。2.通常,32位系统的虚拟地址空间是4G(2^32),64位系统的虚拟地址空间是(2^64)。一般地,我们以4G虚拟地址空间来做分析。4G为理论值,即一个进程最大占用4G的虚拟地址空间,而普遍来说进程实际占用的虚拟地址空间远小于4G。...原创 2018-06-13 10:18:42 · 450 阅读 · 0 评论 -
29.标准c库函数和linux系统函数的区别
原创 2018-06-13 09:40:22 · 602 阅读 · 0 评论 -
28.gdb相关调试命令
1.让gdb跑起来: start --- 运行一行,停止 run/r --- 停在第一个断点的位置2.打印变量的值: p 变量名3.打印变量的类型: ptype 变量名4.向下单步调试: next/n ----不会进入函数体 step/s ----会进入到函数体内部 跳出函数体:finish/until(如果出不去,看一下函数体中的循环是否有断点,如果有删掉,或者设置无...原创 2018-06-12 00:15:59 · 203 阅读 · 0 评论 -
27.gdb断点相关操作
1.设置断点 b 行号 b 函数名 b 文件名:行号 b 文件名:函数名2.查看断点 info/i b3.删除断点 d num(断点编号)4.设置断点无效 dis num(断点编号)5.设置断点生效 ena num(断点编号)6.设置条件断点 b 行号 if 变量==var...原创 2018-06-12 00:13:17 · 209 阅读 · 0 评论 -
26.gcb查看源代码
1.查看当前文件: l l 行号 l 函数名2.查看非当前文件: l 文件名 l 文件名:行号 l 文件名:函数名3.设置显示的行数: set listsize n show listsize...原创 2018-06-12 00:10:11 · 290 阅读 · 0 评论 -
36.lseek实现文件扩展
文件扩展:使得文件的大小得以增加。弊端:要实现文件扩展,必须在最后执行一次写操作,无论写入多少字符均可,空格符也行,否则文件将无法得到扩展。...原创 2018-06-22 17:07:48 · 260 阅读 · 0 评论 -
46.获取文件的用户名和用户组名的函数
1.获取用户名: #include <sys/types.h> #include <pwd.h> struct passwd *getpwuid(uid_t uid); 用法:char* fileUser = getpwuid(st.st_uid)->pw_name;2.获取用户组名: #inc...原创 2018-06-29 22:52:41 · 1098 阅读 · 0 评论 -
44.查看和修改文件属性的函数
ps:用户ID在/etc/passwd中查询,如下图所示如上图xuechao用户,要想知道分项是代表什么含义,可以通过命令man 5 passwd查看,如下图所示:如上图所示,xuechao用户的ID即为第三个分项(1000),同理,组ID为1000。...原创 2018-06-27 20:50:57 · 370 阅读 · 0 评论 -
43.stat函数和lstat函数
shell命令stat可以查看文件的各种属性,如下图:利用lstat函数可以实现shell命令ll的功能,例如执行ll命令如下:穿透:stat函数查看软链接文件(快捷方式)时,查看的是所链接的文件的属性;不穿透:lstat函数查看软链接文件(快捷方式)时,查看的是该文件的属性。此外,还有一些shell命令是会有“穿透”和“非穿透”的操作:rm 软链接文件名---不穿透vim 软链接文件名---...原创 2018-06-27 16:44:45 · 393 阅读 · 0 评论 -
42.阻塞和非阻塞
阻塞和非阻塞是文件的属性还是read函数的属性?答案:文件的属性默认不阻塞:普通文件,例如,hello.c、test.txt等默认阻塞:终端设备/dev/tty、管道、套接字等例如:使用read函数读取终端缓冲区的数据,若缓冲区无数据,则阻塞而不往下执行。使用read函数读取普通文件hello.c,不管hello.c里面有无数据,均不会阻塞,并往下执行。...原创 2018-06-27 16:27:36 · 250 阅读 · 0 评论 -
41.makefile第五个版本
让make生成不是终极目标的目标(终极目标:第一个目标) make 目标名编写一个清理项目的规则clean: rm *.o app声明伪目标:.PHONY:cleanps:目的是为了避免当前目录下有一个同名的clean文件,而不能执行make clean。根据makefile第二个版本中的说法,当前目录下有名为clean的文件,即依赖存在,所以判断是否需要更新,右因为目标:依赖中只有目标而没...原创 2018-06-25 23:27:01 · 210 阅读 · 0 评论 -
40.makefile第四个版本
makefile所有函数都有返回值查找指定目录下的指定类型的文件 src=$(wildcard ./*.c)----查找当前目录下的所有.c文件,并赋值给src匹配替换: obj=$(patsubst %.c,%.o,$(src))ps:将.c文件替换成.o文件,而.c文件取自src,并将.o文件赋值给objsrc = $(wildcard ./*.c)obj = $(patsubst...原创 2018-06-25 23:15:03 · 191 阅读 · 0 评论 -
48.目录遍历函数
原创 2018-06-30 16:03:56 · 189 阅读 · 0 评论 -
39.makefile第三个版本
自定义变量: obj=a.o b.o c.o obj=10变量的取值: aa=$(obj)makefile自带的变量:大写(有些自带变量已赋值,有的则没赋值,故最好自行赋值) CPPFLAGS CC自动变量: $@:表示规则中的目标 $<:表示规则中的第一个依赖 例如,app:main.o add.o sub.o mul.o中的main.o $^...原创 2018-06-25 17:29:06 · 170 阅读 · 0 评论 -
38.makefile的第二个版本
该版本能实现此功能:当某一个依赖文件修改后,仅编译该依赖文件,而其他依赖文件无需重新编译。app:main.o add.o sub.o mul.o gcc main.o add.o sub.o mul.o -o appmain.o:main.c gcc main.c -cadd.o:add.c gcc add.c -csub.o:sub.c gcc sub.c -cmul.o:mul.c gcc ...原创 2018-06-25 16:50:54 · 194 阅读 · 0 评论 -
37.makefile的第一个版本
1.make gcc---编译器 make---linux自带的构建器 构建的规则在makefile中2.makefile文件的命名 makefile Makefile3.makefile中的规则 gcc a.c b.c c.c -o app 三部分:目标,依赖,命令 目标:依赖 (tab缩进)命令 app:a.c b.c c....原创 2018-06-25 16:44:18 · 199 阅读 · 0 评论 -
47.dup、dup2和fcntl函数
1.复制文件描述符 int dup(int oldfd); oldfd:要复制的文件描述符 返回值:新的文件描述符,即最小的未被占用的文件描述符 dup调用成功:有两个文件描述符指向同一文件 dup调用失败:返回-1 int dup(int oldfd,int newfd); oldfd:要复制的文件描述符 newfd:新的文件描述符,有3种情况: (1) newfd没有被占用,则ne...原创 2018-06-29 22:55:07 · 252 阅读 · 0 评论 -
25.启动gdb和命令行传参
1.启动gdb(1) gcc a.c b.c c.c -o app -g -g:会保留函数名和变量名(2) gdb app2.命令行传参 set args xxx xxx原创 2018-06-12 00:08:24 · 565 阅读 · 0 评论 -
24.静态库和动态库
一、库的基本概念1.库是什么?(1)库是二进制文件。(2)可将源代码->二进制格式的源代码 源代码:.c/.cpp(3)起到加密作用2.库制作出来之后,如何给用户使用?(1)头文件(2)制作出来的库二、静态库的制作和使用(1)命名规则:libxxx.a lib xxx--库的名字 .a(2)制作步骤: 源材料:源代码.c/.cpp 将.c文件生成.o 将....原创 2018-05-16 22:35:26 · 181 阅读 · 0 评论 -
5.ls和常用参数
1.功能:查看文件或目录2.语法:ls 或 ls 参数 文件名3.参数:-a:显示所有文件,包括隐藏文件隐藏文件或目录:文件或目录前面有一个点(.),例如.a。-l:显示文件的信息例如,-rwxrw-r-- 1 xuechao xuechao 8 3月08 8:00 test.c第一个字符:文件的类型(7种)普通文件:-目录:d字符链接:l原创 2018-03-12 22:24:54 · 220 阅读 · 0 评论 -
4.路径信息
1.绝对路径和相对路径绝对路径:从根目录/开始表示的路径相对路径:从当前的目录开始表示的路径2.隐藏目录.和...:当前目录..:当前目录的上一级目录.和..可以用指令ls -a显示出来。3.输入shell指令前的部分代表的意思例如:xuechao@ubuntu:~/Desktop/Study$ xuechao:当前登录的用户 @原创 2018-03-12 19:58:49 · 343 阅读 · 0 评论 -
3.Linux目录结构及常见目录
1.Linux目录结构:树状结构,如下所示: 根目录(/) / | \ 目录1 目录2 目录32.Linux常见目录/:根目录bin:二进制文件,例如:可执行程序,shell命令dev:设备文件(在linux下一切皆文件)lib:linux运行的时候需要加载的一些动态库mnt:手动挂载的目录media:外设的自动挂载目原创 2018-03-12 17:20:08 · 217 阅读 · 0 评论 -
2.shell操作常用快捷方式
1.指令、文件或目录的补齐tab键2.查看输入指令的历史history:列出所输入过了指令记录上键/ctrl+p:上一个输入的指令下键/ctrl+n:下一个输入的指令3.光标移动ctrl+b:左移一个字符位置ctrl+f:右移一个字符位置ctrl+a:移动到所有字符前端ctrl+e:移动到所有字符后端4.删除操作Backspace/ctrl+h:删除原创 2018-03-12 09:46:56 · 231 阅读 · 0 评论 -
1.Ubuntu的Linux系统介绍
1.Ubantu的Linux版本主版本号:(1)双数:代表长期支持版本,有效时间5年。 (2)单数:代表短期支持版本,有效时间不定。副版本号:(1)04:代表每年4月份发布的版本,是一个稳定版本。 (2)10:代表每年10月份发布的版本,是一个测试版本。 每年4月份发布的稳定版本,一般会出现一些BUG,经过修改BUG后,在同年10月份发布测试版本,通过测试后,在原创 2018-03-10 20:58:49 · 334 阅读 · 0 评论 -
19.vim命令模式下操作
1.保存退出:ZZps:当文件存在时可保存;当文件不存在时,则无法创建文件并保存。2.代码格式化(linux代码格式):gg=G3.光标的移动(1) 上:K 下:J 左:H 右:L(2) 光标移动到行首:0(零)(3) 光标移动到行尾:$或End键(4) 光标移动到文件首部:gg(5) 光标移动到文件尾部:G(6原创 2018-03-16 21:05:44 · 248 阅读 · 0 评论 -
18.vim简介
根据百度百科上介绍,vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。vim是自由软件。vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。1.需要自己安装vim 安装完vim后,对于vim界面的一些使用方法和快捷键,可以原创 2018-03-16 12:06:56 · 587 阅读 · 0 评论 -
17.软件的安装和卸载
1.在线安装--ubuntu下使用apt-get 安装:sudo apt/apt-get install 安装包的名字 卸载:sudo apt/apt-get remove 软件的名字 软件列表的更新:sudo apt/apt-get update 清空缓存:sudo apt/apt-get cheanps:ubuntu下的安装包缓存位置:/var/cache/apt/原创 2018-03-16 11:25:14 · 206 阅读 · 0 评论 -
16.压缩和解压缩
1.linux下常见的压缩格式:.gz:通过gzip工具来压缩.bz2:通过bzip2工具来压缩2.常用的压缩指令(1)tar--打包参数:c--创建压缩文件x--释放压缩文件v--打印提示信息(可不写)f--指定压缩包的名字z--使用gzip的方式压缩文件(xxx.tar.gz)j--使用bzip2的方式压缩文件(xxx.tar.bz2)原创 2018-03-15 20:24:14 · 199 阅读 · 0 评论 -
15.find高级语法和grep搜索文件内容
例:查找指定目录,并列出该目录中文件详细信息。1. find ./ type d -exec shell指令(ls -l) {} \; find ./ type d -ok shell指令(ls -l) {} \;ps:ok比较安全,会询问你是否确定执行该操作。2. find ./ type d | xargs shell指令(ls -l)ps:执行速度比原创 2018-03-14 21:44:06 · 322 阅读 · 0 评论 -
6.cd和pwd指令
cd:用于切换目录1.cd 目录(绝对路径或相对路径)2.如何进入到当前用户的家目录 (1) cd 绝对路径/相对路径 (2) cd ~ (3) cd3.在临近的两个目录来回切换 cd -ps:临近的两个目录为最后两个相邻的目录,该指令一般适用于相邻的两个目录名较长的情况。pwd:显示当前的工作目录,为绝对路径。原创 2018-03-12 22:44:06 · 316 阅读 · 0 评论 -
7.创建和删除文件或目录
1.创建目录 创建单个目录:mkdir 目录名(绝对路径或相对路径) 创建多级目录:mkdir -p 目录名 例如,mkdir -p a/b/c 此时,目录a、目录b和目录c均被创建出来。 ps:若创建单个目录时,目录存在,则无法创建;若创建多级目录时,目录存在,则无变化。2.创建文件 touch 文件名(绝对路径或相对路径) ps:若文原创 2018-03-13 09:45:38 · 237 阅读 · 0 评论 -
13.chown和chgrp指令
1.修改文件所有者或所属组--chown chown 新的文件所有者 文件名 chown 新的文件所有者:新的文件所属组 文件名2.修改文件所属组--chgrp chgrp 新的声文件所属组 文件名ps:修改文件所有者和所属组时,应先确认新的文件所有者或新的文件所属组是否存在,文件所有者可以在/etc/passwd中查看,文件所属组可以在/etc/gr原创 2018-03-14 16:41:34 · 590 阅读 · 0 评论 -
12.chmod修改文件权限
1.文字设定法 chmod who(+/-/=)mode 文件名who: u--user,文件所有者 g--group,文件所属组 o--other,其他人 a--all,所有人不加who时,默认为对u(文件所有者)和g(文件所属组)执行。+/-/=: +:添加mode权限 -:减少mode权限原创 2018-03-14 16:38:57 · 217 阅读 · 0 评论 -
11.软硬链接
1.软链接--相当于windows下的快捷方式 ln -s 文件名 快捷方式的名字ps:文件名必须使用绝对路径,目录也可以创建软链接。2.硬链接 ln 文件名 硬链接的名字概念: (1) 创建一个新文件,硬链接计数为1 (2) 给文件创建了硬链接:2 (3) 删除一个硬链接:1 (4) 再删除硬链接计数对应的文件:0硬链接的使用场景: 磁盘上有一原创 2018-03-14 16:29:33 · 194 阅读 · 0 评论