2024.5.9
printf("can't creat thread: %s\n", strerror(err));这句里面strerror(err)是什么意思?
strerror(err)
的作用是将 err
对应的错误码转换为对应的错误消息字符串
5.10
所谓的进程上下文,就是一个进程在执行的时候,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态(参数),即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
三种常用的软件架构有:顺序执行的前后台系统、时间片轮询系统和多任务操作系统。
时间片轮询法的实质其实就是选出一个定时器,没进一次定时中断对计数值进行自加,在主循环中根据这个计数值执行任务,这个计数值也就是任务轮询的时间片。
A、B是互斥地访问“厕所”,“厕所”被称之为临界资源。我们使用了“休眠-唤醒”的同步机制实现了“临界资源”的“互斥访问”。
临界资源实例:调用oled屏幕显示
5.12
而命令的本质就是可执行程序,/bin目录是/binary的缩写,它包含众多普通用户可用的命令。而命令的本质就是可执行程序,即二进制bin文件
关于执行权限,是指可以加载到内存中,并由操作系统加载程序执行的文件。
mkdir命令是make directory的简写,它可以在文件系统中创建一个新的目录。
"cat" 是一个常用的命令行工具,用于显示文件的内容。它的名称是 "concatenate" 的缩写,但实际上它不仅仅是用来连接文件的。
"cat" 命令的主要作用是将一个或多个文件的内容输出到标准输出(通常是终端)。您可以使用 "cat" 来查看文件的内容,也可以将其与其他命令组合使用,以进行文件内容的处理和操作。
下面是一些常见的用法:
-
显示文件内容: 最简单的用法是只提供一个文件名,例如
cat filename.txt
,这将显示文件 "filename.txt" 的内容。 -
合并文件: 您可以将多个文件的内容连接在一起并输出到标准输出。例如,
cat file1.txt file2.txt
将会先显示 "file1.txt" 的内容,然后紧接着显示 "file2.txt" 的内容。 -
创建新文件: 您可以使用重定向操作符(
>
)将 "cat" 命令的输出重定向到一个新文件中。例如,cat file1.txt > newfile.txt
将会创建一个名为 "newfile.txt" 的新文件,并将 "file1.txt" 的内容写入其中。 -
查看文件的行数: 通过将 "cat" 命令的输出通过管道传递给 "wc" 命令,您可以统计文件的行数、字数和字符数等信息。例如,
cat filename.txt | wc -l
将会显示文件 "filename.txt" 中的行数。
总之,"cat" 命令是一个非常灵活和强大的工具,用于在命令行环境下处理和查看文件的内容。
$PATH
是一个环境变量,用于指定系统在哪些目录中查找可执行文件。当您在命令行中输入一个命令时,系统会按照 $PATH
中指定的顺序在这些目录中查找对应的可执行文件,如果找到则执行该文件。
您可以使用 echo $PATH
命令来查看当前系统的 $PATH
环境变量的值。通常,它会显示一系列由冒号分隔的目录路径,类似于:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
这表示系统会先在 /usr/local/bin
目录中查找可执行文件,然后是 /usr/bin
,以此类推。如果命令在其中的任何一个目录中找到了对应的可执行文件,则会执行该文件;如果都找不到,则会报错 "Command not found"。
这个环境变量对于命令行的使用非常重要,因为它决定了系统在哪里查找您输入的命令对应的程序文件。
echo test > file.txt # 把echo test的输出重定向至file.txt文件 cat file.txt # 查看file.txt文件的内容 echo abc > file.txt # 把echo abc 的输出重定向至file.txt文件 cat file.txt # 查看file.txt文件的内容 echo 123456 >> file.txt # 把echo 123456的输出重定向追加至file.txt文件 cat file.txt # 查看file.txt文件的内容 ls > file.txt # 把ls命令的输出重定向至file.txt文件 cat file.txt # 查看file.txt文件的内容
mdir命令是remove directory的简写,它的功能是删除空的目录。特别地,rmdir命令只能够用来删除空目录,当删除一个非空目录时,会提示“删除”某某某”目录失败: 目录非空”,所以实际上这个命令用得并不多。
rm 文件名 删除文件名,不能删除文件夹
rm -r 文件夹名 删除文件夹
有时我们在执行命令时忘记添加sudo前缀,执行失败提示时才想起要加sudo,这时可以使用“sudo !!”的方式使用sudo权限重新执行上一条命令。
目前,大多数类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件,软件开发者先在固定的硬件平台上将需要安装或升级的软件编译好, 然后再将软件的所有相关的文件打包存放在公开的服务器中。用户想要安装某个软件时,通过包的形式进行分发,包提供了操作系统的基本组件, 以及共享的库、应用程序、服务和文档,当用户需要时,可以运行特定的指令来安装。负责这部分工作内容的工具被称为包管理工具, 包管理工具除了安装软件外,它还负责更新已经安装的包。
在Linux操作系统中,最常见的两种包分别是deb和rpm。
dpkg是一个底层的包管理工具,主要用于对已下载到本地和已经安装的软件包进行管理。 在它之上的apt(Advanced Package Tool)包管理工具,其功能则更加丰富和方便使用, 使用apt能够自动从互联网的软件仓库中搜索、安装、升级、卸载软件,它会咨询软件仓库, 并能安装软件时的模块及依赖问题。
如果是使用apt工具安装某个软件,直接使用如下命令即可,它会自动下载并安装软件:
1 |
sudo apt-get install 软件名 |
概括起来可以这么理解,deb是软件包,dpkg是手动安装工具,apt是自动安装工具。
1 |
sudo apt-get install 软件包名 |