- 博客(63)
- 收藏
- 关注
原创 进程常用命令
(process status)命令用于显示当前系统中正在运行的进程信息。它可以列出进程的状态、ID、内存使用情况等,帮助用户了解系统中的进程情况。显示当前终端下的进程信息,默认显示的信息包括进程ID(PID)、父进程ID(PPID)、CPU时间等。fg 将后台运行的进程放到前台运行。显示系统中所有进程的信息,包括其他用户的进程。显示进程的长格式信息,包括优先级、状态等。可以只显示进程的PID、运行时间和命令。表示显示没有控制终端的进程(后台进程)。显示指定PID的进程信息。表示显示所有用户的进程,
2024-12-09 10:33:51
248
原创 共享库的概念、链接以及加载
export LD_LIBRARY_PATH = ./,定义当前目录为环境变量。但是当前环境变量只能在当前的终端使用, 换一个终端又不可以使用了,所以可以将这个环境变量加到启动脚本 vim ~/.bashrc。共享库(动态链接库)的生成和使用可以让程序在运行时加载库文件,从而减小可执行文件的大小,并支持库的动态更新。若动态库在当前目录,系统默认会去/usr/lib中去寻找,但是不提倡这种寻找自己创建的动态库。
2024-11-28 19:46:53
238
原创 静态库的创建和链接静态库
2、ar 命令创建 libxxxx.a文件。(静态库文件要以lib开头,后缀名为.a文件)1、通过编写库文件代码,然后编译为.o目标文件。xxxx即libxxxx.a文件名中的xxxx。
2024-11-28 19:16:57
105
原创 I/O:访问目录opendir()函数和readdir()函数
用法:要在打开的目录流中打开一个目录项,enter = readdir(dir);
2024-11-27 20:28:30
245
原创 文件I/O:write ()函数
#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);
2024-11-26 16:52:17
130
原创 umask值
用来限制新创建文件或目录的默认权限。在Linux系统中,可在命令行中直接输入umask来查看,显示格式为八进制格式。以上述为例,系统查得umask值为0002,最终得文件权限用八进制表现出来得0777-0002=0775即rwxrwxr_x。出现这个的原因是umask值的限制,实际文件的权限应该是由mode和umask两个值决定的。上述创建一个新文件,mode设定权限是0777,理想应该的权限是rwxrwxrwx。但是经检查新建文件的 权限是rwxrwxr_x。
2024-11-25 18:57:23
168
原创 文件IO函数--------open()函数
mode(可选)在创建新文件时指定的权限(需要flags包含O_CREAT)。#include <fcntl.h> // 定义 open 函数及文件打开标志 (O_RDONLY, O_WRONLY, 等)#include <sys/stat.h> // 定义文件权限标志(如 S_IRUSR, S_IWUSR)#include <unistd.h> // 定义 close, read, write 等系统调用函数。#include <sys/types.h> // 定义数据类型(如 mode_t)
2024-11-25 16:59:32
154
原创 文件I/O(系统I/O)
文件I/O直接调用系统提供的系统调用(如POSIX标准),操作灵活但需要手动管理缓冲区。其中文件描述符中,0、1、2有特殊含义,分别代表标准输入、标准输出、标准错误。每个打开的文件都会分配一个文件描述符FD,文件描述符从0开始,依次递增。文件IO操作通过文件描述符来完成。
2024-11-25 14:41:14
468
原创 时间函数time()和localtime()
tloc为一个指向time_t类型的变量指针,若tloc非NULL,则将返回的时间存储到tloc的指的内存中去。若tloc为NULL,则该time函数直接返回当前时间值。该函数返回的时间值并不是标准的时间格式,而是返回1970-01-01 00:00:00UTC到现在时间的秒数。可以利用localtime(time_t *tloc)函数将该秒数换算成为标准年月日时分秒格式。下面利用时间函数以及fprintf将时间一秒一秒写进文件之中。
2024-11-23 17:11:08
274
原创 格式化输入scanf、fscanf、sscanf
fscanf(FILE *fp, "格式化占位符", 变量地址);从文件中提取出数据,存放在变量之中。sscanf(char *s,"格式化占位符", 变量地址);从字符串中提取数据,存放之变量之中。scanf("格式化占位符", 变量地址);从键盘输入数据存放之变量中。
2024-11-23 15:18:15
280
原创 格式化输出printf、fprintf、sprintf
fprintf(FILE *fp, "格式化占位符", 变量);sprintf(char *s, "格式化占位符", 变量);printf("格式化占位符", 变量);将变量的值以及“”中的值输出值字符串之中。将变量的值以及“”中的值输出至文件中;直接进行输出变量的值;
2024-11-23 14:49:44
104
原创 文件流的定位和刷新
在C语言中,每打开一个文件流均会维护一个文件指针,用来标记当前读取或写入的位置,每次调用时,文件指针均会向前移动,指向刚读取的内容之后的位置。出现一个问题:文件写完之后,文件指针指向文件末尾,如果这时候直接读,读不出来内容。因此,fflush(FILE *fp)作用还有将文件流的缓冲区内容强制写入到目标文件或清除缓冲区内容。rewind(fp);ftell()成功时返回流当前的读写位置,出错时返回EOF;fseek()定位一个流,成功时返回0,出错时返回EOF;文件的打开模式使用模式,fseek无效。
2024-11-23 14:19:46
277
原创 二进制读写
void *ptr缓冲区,用于存放从流中读或写入流中的数据;size_t size数据大小;size_t n数据个数;主要用于二进制文件的读写,文本文件也可以使用。
2024-11-19 16:50:55
109
原创 I/O文件:读写(按行)
在上函数中,s为目标字符串的缓冲区指针,用于存储读取的数据;size为输入行的尺寸大小,但是我们能输入的字符实际长度为size-1,因为size中包含一个‘\0’;stream为文件流指针,表示从哪个流读取数据如stdin或文件指针。当输入数据多余size时,会有size-1个数据进入缓冲区buff;若输入数据少于size-1时,会在最后输出换行符。puts将缓冲区s的内容输出到stdout,即在终端中显示。fputs将缓冲区s的内容输出到stream中。成功时返回非负整数;
2024-11-17 19:08:27
188
原创 I/O文件:读写(字符)
因为文件开始是在头开始的,文件流内部的文件指针会自动移动至下一个字符,读完一个后读写指针会后移。为什么代码一样相同的读操作不会出现读出同样的文件第一个字符,而是按顺序依次读出字符?对于getchar函数,是读取键盘输入的内容的第一个字符。多进行几次连续的读操作即可,fgetc和getc操作相同。其中fgetc是一个函数,getc是一个宏定义。
2024-11-16 15:51:05
166
原创 编译的常见错误记录(新增ing)
2、warning: implicit declaration of function '函数名' 表示函数的隐式声明。3、too many arguments for format 表示传递给他们的参数量与格式化字符串数量不一致。可能是忘记引用头文件,或自己未定义该函数,或者未引用自己写的头文件。1、'函数名' undeclared 表示该函数名没有定义,找到对应的头文件,并引用。
2024-11-15 17:29:22
625
原创 I/O文件:文件的关闭
成功关闭返回1,关闭失败返回EOF即-1,并设置errno。当一个程序正常终止时,所有打开的流都会被关闭。若未成功打开文件,就不能关闭,会返回段错误。流关闭时自动刷新缓冲中的数据并释放缓冲区。流一旦关闭就不能执行任何操作。
2024-11-15 17:10:14
149
原创 I/O文件:报告错误strerror(errno)
这里存在一个问题,为什么strerror函数返回值是一个字符指针,在输出时却使用%s,而不是返回指针地址%p。使用strerror()函数需要引入头文件string.h,参数errno需要引入头文件errno.h。其中errno存放错误号,由系统生成,strerror根据错误号返回对应的错误信息。
2024-11-15 16:37:40
249
原创 如何查看库函数的描述、定义以及所需要的头文件
在linux系统中,通过 man 3 库函数名 可查看库函数的描述、定义以及所需要的头文件。对于man命令,通过数字选项可以查看不同库函数的定义内容。
2024-11-15 15:04:46
186
原创 I/O文件:文件的打开
五、a或ab 以只写的方式打开文件,若文件不存在则创建。向文件写入的数据被追加到文件末尾。六、a+或a+b 以读写方式打开文件,若文件不存在则创建。其中path为文件的绝对路径,若要打开当前目录下的普通文件,则只需要填文件名即可,其他需要填写完整的绝对路径。三、w或w+b 以只写的方式打开文件,若文件存在则文件长度清0.若文件不存在,则创建。四、w+或w+b以读写的方式打开文件,若文件存在则文件长度清0.若文件不存在,则创建。二、r+或r+b 以读写的方式打开文件,文件必须存在。
2024-11-15 14:56:10
453
原创 文件流及其缓冲类型
文件流(File Stream)是一种用于在程序中对文件进行读写的机制,它允许程序与文件系统之间传递数据。文件流是一种数据流,可以理解为一条“数据管道”,通过它可以将数据从一个源(例如文件)传送到一个目标(例如内存)或从内存写入文件。输出流将程序中的数据以字节流的形式写入文件中,保存为持久化的数据。输入流将文件中的字节数据读取到内存,供程序使用。例如,读取文本文件中的内容并在程序中显示。全缓冲:当流的缓冲区无数据或无空间时才能执行I/O操作。无缓冲:文件直接写入文件,流不进行缓冲。
2024-11-07 16:20:42
190
原创 make指令的使用
f 文件名 可以指定一个文本文件为makefile文件,在make指令时,默认会以当前文件中以makefile为命名的文件执行,如果使用其他名字,如makefile1,仅仅使用make不会运行makefile文件,可以使用make -f makefile1来运行。-i 忽略所有命令执行错误,中间代码出现错误不会停止,会继续往下进行,对于长时间编译的代码,有重要作用。-n 只打印要执行的命令,而不去执行这些命令。-w会显示当前makefile所在目录。-C调用指定目录下的makefile。
2024-09-04 16:58:36
274
原创 Makefile函数
patsubst函数作用是查找next中的单词,是否满足pattern的模式,若满足,则用replacemaent进行替换。可以是用通配符%,若想使用百分号的原本意义,需要\进行转义。wildcard函数作用是列出所有PATTERN的文件 ,这里该参数可以是用通配符 例如*.c,就代表列出所有以.c结尾的文件。定义$(函数名 参数) 或 ${函数名 参数}例如: $(wildcard PATTERN)$(call函数名,参数1,参数2,...)define 函数名。
2024-09-03 21:56:27
294
原创 Makefile的条件判断
用法 ifeq (量1,量2) 量1和量2比较,中间一定要加空格;用法 ifdef 变量名 注:不加任何括号中间一定要加一个空格。即使在程序中未定义,也可以在make指令后进行传参。ifndef 判断是否未定义过。ifneq 判断是否不相等。ifdef 判断是否定义过。ifeq 判断是否相等。
2024-09-03 21:01:08
192
原创 makefile的隐含变量
类似的CFLAGS作为编译器选项,如果头文件不和程序文件在同一个目录下,可以加上选项 -I 头文件目录进行编译,就不会报找不到头文件的错误。CFLAGS = -c -g -Wall -I 头文件所在目录 -c -g -Wall均是gcc的选项。gcc命令可以用CC = gcc进行代替。
2024-09-01 20:54:03
223
原创 makefile的自动变量
注:每次运行结果后,再修改代码,然后直接make会显示目标文件已经是最新,这时需要将当前目录下的.o文件删除,因为makefile代码中会默认执行第一条命令,发现当前目录下存在所依赖的文件,就不会继续执行命令去生成相应的.o文件,而当前目录下的.o文件是修改前的.o文件,故再次make会显示test已经是最新。
2024-09-01 20:23:55
424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人