man 手册1.1 汉化安装中文包
sudo apt-get updatesudo apt-get install manpages-zh1.2 具体使用使用三种方式查询open接口的详细信息
//man -l zh_cn openman 1 openman 2 openman 3 openpart2文件权限2.1 权限理解在 ubuntu(以及其他类 unix 操作系统)中,文件权限用于控制谁可以对文件进行哪些操作。文件权限在权限位组合中表示为一组三位权限字符串。每个权限字符串表示了文件的所有者、组和其他用户所具有的权限。 ubuntu 文件权限的详细说明:
一个权限字符串由九个字符组成,这九个字符可以分成三组,每组三个字符:
第一组 :文件类型和所有者权限第二组 :组权限第三组 :其他用户权限每组中的三个字符分别表示读取(r)、写入(w)和执行(x)权限。如果某个权限位被授予,相应的字符为相应的字母,如果未授予,则为减号(-)。
以下是一个权限字符串的示例:-rwxr--r--
这个权限字符串表示:
文件类型:普通文件(减号表示)所有者权限:读、写、执行组权限:读其他用户权限:读2.2 文件详细信息查询可以用 ll 命令查看当前文件夹下文件详细信息
img
或者查看指定文件
zsd@ubuntu:~/study/linuxstudy$ ls -l test.c-rw-rw-r-- 1 zsd zsd 08月 2715:34 test.c在上面的输出中,-rw-r--r-- 就是文件的权限字符串。第一个字符 - 表示文件类型(普通文件),d 表示隐藏文件,接下来的三个字符是所有者权限,再后面的三个字符是组权限,最后的三个字符是其他用户权限。
2.3 权限更改要更改文件权限,可以使用 chmod 命令。例如,要将文件 test.c 的所有者权限设置为读、写、执行,可以执行以下命令:
chmod 700 test.c这会将权限字符串修改为 -rwx------,表示所有者拥有全部权限,其他用户没有任何权限。
part3****常用函数接口3.1 openopen 函数是一个系统调用,用于打开一个文件或者创建一个新文件,并返回一个文件描述符(file descriptor),以便后续对文件的读写操作。它是在 头文件中声明的,其函数原型如下:
#include int open(const char *pathname, int flags, mode_t mode);3.1.1open 函数的参数和作用pathname(文件路径) :这是一个字符串,表示要打开或创建的文件的路径。可以是相对路径或绝对路径。flags(标志位) :这是一个整数,用于指定打开文件的方式和选项。常见的标志位包括:
这些标志位可以通过按位或(|)组合使用,以满足特定的需求。例如,o_rdonly | o_creat 表示以只读方式打开文件,如果文件不存在则创建。 o_rdonly:只读打开。o_wronly:只写打开。o_rdwr:读写打开。o_creat:如果文件不存在,创建文件。o_trunc:如果文件存在,截断文件(将文件大小置为0)。o_append:在文件末尾追加写入。mode(文件权限) :这是一个整数,仅在创建文件时使用。它指定了新创建文件的权限(文件所有者、组和其他用户的读写执行权限)。通常使用八进制表示,如 0644 表示所有者可读写,其他用户只读。3.1.2 函数返回值open 函数的返回值是一个整数,表示文件描述符。如果成功打开或创建文件,返回的文件描述符是一个非负整数。如果出现错误,返回值为 -1,并可以使用 errno 来获取具体的错误代码。
3.2 readread 函数是一个系统调用,用于从文件描述符(file descriptor)中读取数据。它是在 头文件中声明的,其函数原型如下:
#include ssize_t read(int fd, void *buf, size_t count);3.2.1 read 函数的参数和作用fd(文件描述符) :这是一个整数值,表示要从哪个文件描述符读取数据。文件描述符是一个用于标识打开的文件、套接字等的整数值。在代码中,使用了 open 函数来打开文件,并将返回的文件描述符传递给了 read 函数。buf(缓冲区) :这是一个指向存储读取数据的内存缓冲区的指针。read 函数会将读取的数据存储到这个缓冲区中。count(读取字节数) :这是要读取的最大字节数。read 函数会尝试从文件中读取最多 count 字节的数据。3.2.2 函数返回值read 函数的返回值是一个 ssize_t 类型的整数,表示实际读取的字节数。返回值可以是以下几种情况之一:
如果返回值为正数:表示成功读取了指定数量的字节。如果返回值为 0:表示已经到达文件末尾(end of file,eof)。如果返回值为 -1:表示出现了错误。可以通过检查 errno 来获取具体的错误代码。3.3 writewrite 函数是一个系统调用,用于向文件描述符(file descriptor)写入数据。它是在 头文件中声明的,其函数原型如下:
#include ssize_t write(int fd, const void *buf, size_t count);3.3.1 write` 函数的参数和作用fd(文件描述符) :这是一个整数值,表示要向哪个文件描述符写入数据。文件描述符是一个用于标识打开的文件、套接字等的整数值。在代码中,你使用了 open 函数来打开文件,并将返回的文件描述符传递给了 write 函数。buf(缓冲区) :这是一个指向包含要写入数据的内存缓冲区的指针。write 函数会将缓冲区中的数据写入到文件中。count(写入字节数) :这是要写入的字节数。write 函数会尝试将缓冲区中的前 count 字节的数据写入到文件中。3.3.2 函数返回值write 函数的返回值是一个 ssize_t 类型的整数,表示实际写入的字节数。返回值可以是以下几种情况之一:
如果返回值为非负数:表示成功写入了指定数量的字节。如果返回值为 -1:表示出现了错误。可以通过检查 errno 来获取具体的错误代码。3.4 closeclose 函数是一个系统调用,用于关闭文件描述符(file descriptor)。它是在 头文件中声明的,其函数原型如下:
#include int close(int fd);3.4.1 close` 函数的解析fd(文件描述符) :这是一个整数值,表示要关闭的文件描述符。文件描述符是一个用于标识打开的文件、套接字等的整数值。在代码中,你可能使用了 open 函数来打开文件,并将返回的文件描述符传递给了 close 函数。3.4.2 函数返回值close 函数的返回值是一个整数。如果关闭文件成功,返回值为 0。如果出现错误,返回值为 -1,并可以通过检查 errno 来获取具体的错误代码。
3.5 函数使用示例#include // 包含文件操作相关的头文件#include // 包含系统调用相关的头文件#include // 包含标准输入输出库,用于使用 perror 函数int main() { // 打开源文件,只读方式 int src_fd = open(source.txt, o_rdonly); if (src_fd == -1) { perror(error opening source file); return1; } // 打开目标文件,写入方式(如果不存在则创建) int dest_fd = open(destination.txt, o_wronly | o_creat | o_trunc, 0644); if (dest_fd == -1) { perror(error opening destination file); close(src_fd); // 关闭源文件 return1; } // 读取源文件数据并写入目标文件 char buffer[1024]; ssize_t bytes_read; while ((bytes_read = read(src_fd, buffer, sizeof(buffer))) > 0) { ssize_t bytes_written = write(dest_fd, buffer, bytes_read); if (bytes_written == -1) { perror(error writing to destination file); close(src_fd); // 关闭源文件 close(dest_fd); // 关闭目标文件 return1; } } // 检查读取过程中是否出错 if (bytes_read == -1) { perror(error reading from source file); close(src_fd); // 关闭源文件 close(dest_fd); // 关闭目标文件 return1; } // 关闭文件 if (close(src_fd) == -1) { perror(error closing source file); return1; } if (close(dest_fd) == -1) { perror(error closing destination file); return1; } printf(file copy successful.n); return0;}part4make与makefile4.1 make 与 makefile区别make:make 是一个命令行工具,用于自动化构建软件项目。它根据一组规则和依赖关系,检查源代码文件的最新修改日期,并确定哪些文件需要重新编译。make 在 linux 和类 unix 系统上广泛使用,以减少手动编译的工作量。
makefile:makefile 是一个文本文件,其中包含了用于构建软件项目的规则、依赖关系和命令。它告诉 make 工具如何编译和链接源代码文件,以及在构建过程中需要执行哪些操作。makefile 通常包括目标(target)、依赖关系(dependencies)和要执行的命令。
4.2 makefile的编写# 编译器# cc = g++cc = gcc# 编译选项# cflags = -wall -std=c++11# cflags = -wall -std=c++11 -g# cflags = -wall -std=c++11 -staticcflags = -wall# 目标文件名target = myprogram# 所有的源代码文件sources = main.c utils.c mytest.c# 生成目标文件的中间文件objects = $(sources:.c=.o)# 默认目标all: $(target)# 生成目标文件$(target): $(objects) $(cc) $(cflags) -o $(target) $(objects)# 编译每个源文件到目标文件%.o: %.c $(cc) $(cflags) -c $< -o $@# 调试目标# debug: $(target) # gdb ./$(target)# 清理生成的文件clean: rm -f $(objects) $(target)part5vim简单操作输入:help查看帮助,按下ctrl + w 然后按下 q 退出帮助
启动 vim :在终端中输入 vim 命令,后跟文件名,即可启动 vim 并打开指定文件:模态编辑 :vim 有多种模式,其中两个主要模式是: 正常模式(normal mode) :用于导航、删除、复制等操作。插入模式(insert mode) :用于输入文本。切换模式 : 进入正常模式:按下 esc 键。进入插入模式:在正常模式下按下 i 键(在光标前插入)、a 键(在光标后插入)或其他命令(如 o 或 o)。保存和退出 : 保存文件:在正常模式下按下 : 键,然后输入 w 并按下 enter 键。保存并退出:在正常模式下按下 : 键,然后输入 wq 并按下 enter 键。退出不保存:在正常模式下按下 : 键,然后输入 q! 并按下 enter 键。基本移动 : 上移:k下移:j左移:h右移:l删除和复制 : 删除字符:在正常模式下按下 x 键。复制行:在正常模式下按下 yy。撤销和重做 : 撤销:在正常模式下按下 u 键。重做:在正常模式下按下 ctrl + r 键。查找和替换 : 查找:在正常模式下按下 / 键,然后输入要查找的内容并按下 enter 键。替换:在正常模式下按下 : 键,然后输入 %s/old/new/g 进行全局替换。
台积电扩大与大陆集成电路产业化基地和技术中心合作
极低功耗的物联网唤醒芯片
基于SolidWorks的开关柜模型的热传导结构
TCL聚焦主业,华星光电OLED试验线已开始产品试制
Linux 多线程编程
Linux文件权限及Makefile
最小尺寸CAT1 模组(17.7mmx15.8mm)的: CLM920_YV9 (ASR 1603 兼容2G封装 )
数字货币支付方式将成为记账方式之一
用于人体暴露评估5G信号的电磁场(EMF)设计
9V电池改充电宝方法
节能LED显示屏是如何设计的
区块链存在的价值是什么
新唐科技N76E003单片机简介
一种掉电保护原理电路
跨阻放大器对光信号的要求
解读μLED新兴介质的起源、技术突破以及发展前景
瑞芯微RK3399将全面助力推动政企办公设备国产化
英创信息技术WEC7与WEC2013介绍
在实际生活中,量子物理有用吗?
iPhone升级iOS10.3后,内存节省,你会升级吗?