当前位置: 首页 > news >正文

Linux C学习路线全概及知识点笔记1(仅供个人参考)

系列文章目录

第一章 Linux基本操作


目录

系列文章目录

前言

1.Linux基本操作

1.1 Linux目录结构

1.11 常见注意点与建议

1.2 文件类型

1.3 目录操作

1.4 文件操作

1.5 gcc命令

1.6 shell脚本

1.6.1 常见条件测试操作符

1.6.2 shell高级语法之case xx in ...esac

​编辑

1.7 Makefile的编写

1.7.1 Makefile 基本工作原理

1.7.2 典型的工作流程

1.7.3.1 具体步骤

​编辑

1.7.4 伪目标

1.7.5 3个常用的函数

 1.7.5.1  wildcard函数

1.7.5.2 patsubst函数

1.7.5.3 结合使用wildcard 和 patsubst

1.7.6 basename函数

1.7.7 自动化规则变量

1.7.8 简单Makefile示例

1.7.9 其它高级Makefile函数,待补充

2,C语言知识点(不叙述)

3,数据结构

3.1 冒泡排序(Bubble Sort)

3.2 直接插入排序 (Insertion Sort)

3.3 快速排序

3.3.1 快速排序原理(Divide and Conquer)

3.3.2 快速排序代码实现(基础版)

3.4 二叉树(待实现)

4. 链表操作

4.1 链表基础结构与类型

4.2 常见操作总览

4.2 创建链表

4.3 插入操作

4.4 删除操作

4.5 修改节点

4.6 查找操作

4.7 遍历与打印链表

4.8 释放链表

4.9 测试示例

5,进阶-Linux编程

5.1 掌握POSIX文件I/O API

5.2 熟练写出“文件拷贝”模块代码(使用系统调用)

5.3 理解缓冲的概念

对比说明:

6,进程控制类API

6.1 fork函数

6.2 exec族函数(用于执行另一个程序)

6.2.1 常用函数对比

7. 线程类控制API

7.1 线程创建:pthread_create

7.2 等待线程退出:pthread_join

7.3 线程退出:pthread_exit

7.4 线程取消:pthread_cancel

7.5 线程同步机制(常用)

7.5.1 互斥锁

7.5.2 条件变量 pthread_cond_t

7.5.3 读写锁 pthread_rwlock_t

7.5.4 多线程编程接口示例

7.6 总结对比表


前言

文章记录Linux C相关学习笔记

1.Linux基本操作

        示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.1 Linux目录结构

        Linux中一切皆文件,系统所有内容都挂载在根目录 / 下,核心目录结构如下:

目录名全称/含义主要功能描述
/root(根)目录整个文件系统的起点,所有目录都从此派生。
/binbinary(基本命令)存放常用命令的可执行文件,如 lscpmvrm 等,系统启动后立即可用。
/sbinsuperuser binary系统管理员使用的命令,如 rebootifconfig,普通用户通常无权限。
/etcetcetera(配置)所有系统级配置文件所在位置,如 /etc/passwd/etc/fstab
/devdevice(设备文件)设备节点,如 /dev/sda,代表硬盘,/dev/null 等特殊设备。
/procprocess(进程信息)虚拟文件系统,内核与进程信息,如 /proc/cpuinfo/proc/meminfo
/syssystem(系统接口)与内核交互的接口,常用于设备驱动与热插拔设备信息。
/usrunix system resources第二层级的程序文件系统,如 /usr/bin/usr/lib
/liblibrary(共享库)基础命令使用的共享库,如 libc.so
/varvariable(可变数据)日志、缓存、邮箱等可变数据,如 /var/log/var/spool
/tmptemporary(临时文件)存放临时文件,系统重启后可能会被清空。
/bootboot(启动文件)包含内核文件 vmlinuz 和引导加载器配置文件(如 grub.cfg)。
/home用户主目录各个用户的数据目录,如 /home/jordan
/root超级用户主目录root 用户的 home 目录,不等同于 /
/optoptional(可选应用)第三方应用或软件安装位置,如 Oracle、VMware。
/mntmount(临时挂载点)临时挂载文件系统的挂载点。
/media移动设备挂载点光盘、U 盘等外部设备通常挂载到此。
/run运行时数据目录用于存放系统启动后的运行时信息,如 PID 文件、lock 文件。

1.11 常见注意点与建议

(1)系统重要目录不要轻易改动权限或删除文件,如/etc、/bin

(2)/usr 是只读的(或视为只读的),/usr/local 可供用户安装自定义软件

(3)/var/log 是查看系统日志的主要目录,如syslog、dmesg

(4)挂载新分区时,推荐使用/mnt 或 /media

(5)对于嵌入式系统或精简系统,可以裁剪目录,仅保留 /bin、/sbin、/etc、/dev、/proc等最基本结构(如BusyBox环境)

1.2 文件类型

文件类型符号示例描述
普通文件-myfile.txt存储文本、二进制数据等内容的普通文件。
目录文件d/home存放文件和子目录的容器。
符号链接llink_to_file指向其他文件的引用。
块设备文件b/dev/sda设备文件,用于与硬盘等块设备进行交互。
字符设备文件c/dev/ttyS0用于与串口设备等字符设备交互的文件。
管道文件pmypipe用于进程间通信的文件。
套接字文件s/tmp/socket用于网络或进程间通信的文件。
门文件Ddoor_file用于进程间通信的文件(在 Solaris 中使用较多)。

1.3 目录操作

操作命令及选项示例
查看当前目录pwd/home/user
列出目录内容ls / ls -l / ls -a / ls -Rls -la
创建目录mkdir new_directory / mkdir -pmkdir -p /home/user/new_folder
删除空目录rmdir directory_namermdir old_directory
删除非空目录rm -r directory_namerm -r old_directory
更改当前目录cd /path/to/directorycd /home/user/Documents
复制目录cp -r source_directory destinationcp -r folder /home/user/backup/
移动或重命名目录mv source_directory destinationmv old_folder new_folder
查找目录中的文件find /path -name "filename"find /home/user -name "*.txt"
查看目录空间使用情况du -sh /path/to/directorydu -sh /home/user/Documents
查看 inode 使用情况ls -i /path/to/directoryls -i /home/user

1.4 文件操作

操作命令及选项示例
创建文件touch filename / echo text > filetouch myfile.txt
查看文件内容cat / less / head / tailless myfile.txt
编辑文件nano / vi / vimnano myfile.txt
复制文件cp source_file target_filecp file1.txt /backup/
移动或重命名文件mv source_file target_filemv oldfile.txt newfile.txt
删除文件rm filenamerm myfile.txt
查找文件find /path -name "filename"find /home/user -name "*.txt"
比较文件diff file1 file2diff file1.txt file2.txt
查看文件元数据stat filenamestat myfile.txt
创建硬链接或符号链接ln / ln -sln -s file1.txt link.txt

1.5 gcc命令

选项功能示例
gcc source.c -o output编译源代码并生成可执行文件gcc hello.c -o hello
-g生成调试信息gcc -g hello.c -o hello
-O0 / -O1 / -O2 / -O3优化级别(-O0 无优化,-O3 高级优化)gcc -O2 hello.c -o hello
-Wall启用所有常见的警告gcc -Wall hello.c -o hello
-L<path> -l<lib>指定库路径并链接库文件gcc hello.c -L/usr/lib -lm
-I<path>指定额外的头文件路径gcc -I/usr/include hello.c
-c只编译源文件,生成目标文件(.o)gcc -c hello.c
-E只进行预处理,输出预处理后的结果gcc -E hello.c
-v显示编译过程详细信息gcc -v hello.c -o hello

1.6 shell脚本

语法/概念示例说明
Shebang#!/bin/bash指定解释器
注释# 这是注释# 后的内容是注释,Shell 会忽略它
变量name="Jordan"name 是变量名,Jordan 是变量值
条件语句(if)if [ $1 -gt 10 ]; then判断条件并执行不同的命令
循环(for/while)for i in 1 2 3; do echo $i; done遍历列表或条件,执行重复的命令
函数function_name() { ... }自定义函数,可传参并返回值
文件操作if [ -f "file.txt" ]; then判断文件是否存在
退出脚本exit 0退出脚本并返回指定的退出状态码

1.6.1 常见条件测试操作符

  • -eq:等于

  • -ne:不等于

  • -lt:小于

  • -le:小于或等于

  • -gt:大于

  • -ge:大于或等于

  • -z:字符串为空

  • -n:字符串非空

1.6.2 shell高级语法之case xx in ...esac

        case是shell中一种条件分支语句,用于根据不同的值或模式执行不同的代码块。它的语法类似于其它编程语言中的switch语句。case语句通常用于多条件判断,特别适合处理多个可能的输入或选项。

1.7 Makefile的编写

        Makefile是用来控制项目自动化构建的工具,它基于文件的依赖关系来决定哪些文件需要更新。make是一个工具,利用Makefile中定义的规则,自动化的管理源代码的编译和构建过程。它通过检查文件的“时间戳”,决定是否需要重新构建目标。

1.7.1 Makefile 基本工作原理

1.7.2 典型的工作流程

1.7.3 示例:Makefile的工作原理

假设有以下Makefile:

makefile#目标1: main.o 依赖与main.c 和 utils.h
main.o: main.c utils.hgcc -c main.c -o main.o#目标2: program 依赖于 mian.o 和 utils.o
program: main.o utils.ogcc $^ -o $@
1.7.3.1 具体步骤

相关文章:

  • 【2025】基于Springboot + vue + 协同过滤算法实现的旅游推荐系统
  • 基于RK3576+FPGA+CODESYS工控板的运动控制模块方案
  • # 探索自然语言处理的奥秘:基于 Qwen 模型的文本分类与对话系统实现
  • 星际旅行家(广度优先搜索+邻接表)
  • 通俗理解线性与非线性、时变与时不变系统,和数值不稳定性机制
  • 使用Java制作贪吃蛇小游戏
  • PCB文件从 Allegro 24.1 降级保存为 Allegro 17.4版本格式
  • YOLOV8涨点技巧之DSS模块(一种轻量化火灾检测模型)
  • React声明式编程(手动控制,大型项目,深度定制)与Vue响应式系统(自动优化,中小型项目,快速开发)区别
  • 多行字符串文本?各式各样的字符串类型?字符和字符串?
  • GO 语言进阶之 时间处理和Json 处理
  • 实战设计模式之访问者模式
  • Hertz+Kitex快速上手开发
  • 揭开C语言指针的神秘面纱:地址、变量与“指向”的力量
  • 【Python 元祖】 Tuple 核心知识点
  • QT单例模式简单讲解与实现
  • Redis哨兵模式,CLUSTERDOWN Hash slot not server 解决
  • 整数反转(7)
  • 《1.1_3_2 电路交换、报文交换、分组交换的性能分析|精讲篇》
  • 性能优化关键:link、script和meta的正确打开方式
  • 公司域名邮箱怎么注册/北京seo学校
  • 网站建设项目申请/查域名备案
  • 甘肃省建设厅官方网站/杭州seo整站优化
  • 做百度网站还是安居客网站/百度推广找谁做靠谱
  • 域名停靠app大全免费下载网站入口/软文广告300字范文
  • 网站改版具体建议/百度账号登录入口