0 Linux 前言

目录

0 Linux 前言
1 Linux 文件读写
2 Linux 文件属性
3 Linux 目录操作
4 Linux 系统部分基础概念
5 Linux 进程初探
6 Linux 进程间通信(IPC)
7 Linux 守护进程
8 Linux 线程

注: 基于Debian系Linux(Debian, Ubuntu, Kali Linux, Raspberry Pi OS…等大同小异)实践所写note

代码编译中我使用的CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(demo)
add_compile_options(-std=c11 -Wall -Werror -Wextra -pedantic -Wimplicit-fallthrough -Wsequence-point -Wswitch-default -Wswitch-unreachable -Wswitch-enum -Wstringop-truncation -Wbool-compare -Wtautological-compare -Wfloat-equal -Wshadow=global -Wpointer-arith -Wpointer-compare -Wcast-align -Wcast-qual -Wwrite-strings -Wdangling-else -Wlogical-op -Wconversion -Wno-pedantic-ms-format)
include_directories(.)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
aux_source_directory(. src)
add_executable(demo ${src})
target_link_libraries(demo PRIVATE Threads::Threads)

默认apt镜像服务器在国外,速度很慢,甚至可能连接失败(没有梯子的话),也可以采用更换国内镜像源的方式解决这个问题
点我前往换源帮助

安装C/C++开发工具

# C/C++编译器等相关工具
sudo apt install build-essential

# cmake
# 用于生成 Makefile 文件, 再使用 make 编译
# 可选安装, 也可以自己写 Makefile 进行编译 或者 用 gcc 命令编译
sudo apt install cmake

C语言标准库函数以及Linux系统函数等等都可使用 man 命令查询, 系统也可能没有预装这部分,安装见下述:

  • C语言库函数基本帮助文档
sudo apt install manpages manpages-de manpages-de-dev manpages-dev
  • POSIX函数
sudo apt install manpages-posix manpages-posix-dev
  • 内核函数
sudo apt install linux-doc

关于函数空参数和显式void声明无参数的简述
C中,自定义函数在不需要参数的情况下,括号内留空和显式声明void其实是不同的,在采用留空的方式下定义一个函数,代表的是不限定参数个数.比如你定义了一个函数 void fun() {} ,调用的时候,你可以当作无参数fun(); ,也可以 fun(6); fun('c'); fun(1, 4, 7); fun("1f", 5); ,编译器是不会报错的. 但是如果你定义函数时显式声明无参数: void fun(void), 那么调用的时候就只能使用 fun();

而在C++中,两种情况是等效的, 因为C++中存在函数重载, 只能依靠参数不同来区别, 不可能将 void fun() {}void fun(void) {}视作重载,调用的时候都是用留空的方式代表不传入参数,无法区别

PS: 对于我,既要保证代码严谨,又尽可能少写. 因此在C中,凡是无参数我都会显式声明 void , 在C++中就留空




后面正文内容中,代码头部有定义 #define _GNU_SOURCE的,就是使用了同时含有 POSIX 和 GNU 两个版本且定义不同的接口中 GNU 版本的




部分常用命令简述

  • chmod
    在这里插入图片描述
  • chown
    在这里插入图片描述
  • chgrp
    在这里插入图片描述
  • tar
    在这里插入图片描述
  • rar
    在这里插入图片描述
  • zip 和 unzip
    在这里插入图片描述





Linux目录结构
在这里插入图片描述




我与Linux之缘
2017年高一后的暑假,七月的时候,因为接触到易语言,对"编程"起了兴趣. 八月份开始的时候,在网上查阅信息,了解到了C语言,当时对编程还没什么系统的概念,看网上很多人说用Linux学C语言好,就对Linux起了好奇心,想试一试. 来回的查,最终选定了银河麒麟(就是一个基于Ubuntu衍生的"国产"系统),然后开始作死的尝试安装,试图搞Windows和Linux的双系统, 把下载的镜像烧录到U盘,然后准备安装,安装不成还把引导弄坏了. 试图凭着U盘中烧录的镜像安装也不成,想装Windows也不行,家里只有那台笔记本,没法制作安装盘. 不过好在烧录的镜像还有一个 Live 模式, 可以用U盘启动,但是每次启动之前做的修改就没了. 这样通过Live模式,以一种奇怪的方式用了差不多半年的Linux, 这是后话. 在八月入Linux后,我也不断查阅资料,怎么写C语言,最开始是用的银河麒麟上预装的Qt Creator, 后面懂了些,开始换成vim编辑,然后配合gcc编译. 回想当时也确实挺懵的,当时还遇到一个问题卡过我几天,就是编译好的程序 a.out , 但是直接在终端输 a.out 回车却不能执行, 之后找了一本感觉不错的C语言书(也是基于Linux终端的), 才知道原来还要加个 ./ .八月后面的那十天左右就天天抄那本书上的案例程序执行, 到开学的时候,我也对C语言有大概的了解了,可以不需要书简单的写写了.而在这个时间段,对Linux也有了更多了解了,基本的常用命令没什么问题了,不知道就查,越用越熟. 从那以后我在编程中就基本无法离开Linux了,也是一种喜好. 有一段是Windows和Linux混合用,Windows 10支持Linux子系统, 2020年(Windows 10 2004)推出了WSL2,很多之前不能正常运行的UI程序也可以正常用了,前不久又直接把我电脑系统换成了Ubuntu 20.04.

猜你喜欢

转载自blog.csdn.net/weixin_45579994/article/details/112688831