![](https://img-blog.csdnimg.cn/20210319194129415.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux专栏
文章平均质量分 81
本专栏写了对Linux的一些学习记录和使用技巧总结,主要是Linux基础操作与具体应用,还会有一些Linux操作系统中的五个子系统模块对应的内容。
圣地亚哥^
目前从事GUI、OSD相关工作,平时喜欢看驱动开发相关知识。
展开
-
并发竞态的解决方法
有多个进程同时访问同一个驱动程序中的临界资源的时候,竞态就会产生了。竞态产生的根本原因:1.对于单核cpu,内核支持抢占。2.多核cpu,核与核之间会产生竞态3.中断和进程间也会产生竞态4.中断和中断间产生竞态(中断嵌套可以)(arm架构不支持)一、中断屏蔽(了解)中断屏蔽只适合在单核cpu。中断屏蔽保护的临界资源要尽可能的短(时间),如果屏蔽的时间较长,可能导致内核的崩溃,或者用户数据的丢失。local_irq_disable();//临界资源local_irq_enable()原创 2020-08-29 21:07:53 · 420 阅读 · 0 评论 -
GDB常用命令
1、运行命令file:装入需要调试的程序。run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。continue (简写c ):继续执行,到下一个断点处(或运行结束)step (简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的next:(简写 n),单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调原创 2021-02-19 15:28:35 · 202 阅读 · 0 评论 -
setsockopt函数参数详解
函数原型//函数原型int setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen);函数参数解析:s(套接字): 指向一个打开的套接口描述字。level:(级别): 指定选项代码的类型。 SOL_SOCKET: 基本套接口 IPPROTO_IP: IPv4套接口 IPPROTO_IPV6: IPv6套接口 IPPROTO_TCP: TCP套接口optname(选项名): 选项名称。opt原创 2020-07-11 10:07:52 · 3710 阅读 · 0 评论 -
_exit和exit的区别
exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件.即:exit(): 会将缓存内容传给内核._exit(): 直接清空缓存,不会将缓存内容传给内核.下面为分别测试exit()和_exit()#include <stdio.h>#include <string.h>#include <stdlib.h>#include <strings.h>#in原创 2020-06-30 19:18:24 · 301 阅读 · 3 评论 -
linux下chmod +x的含义
chmod +x 的意思给文件增加执行权限chmod +x 和 chmod u+x的区别chmod a+x 其中加号前面的字母的含义u 代表用户.g 代表用户组.o 代表其他.a 代表所有.这意味着chmod u+x somefile 只授予这个文件的所属者执行的权限而 chmod +x somefile 和 chmod a+x somefile 是一样的,都表示给所用用户赋予执行权限...转载 2020-12-19 17:51:26 · 1890 阅读 · 1 评论 -
Makefile中的include命令
关于Makefile中的include命令,网上有很多介绍,比较普遍的说法是:Makefile中的include命令与C语言中的include命令类似,命令include file.dep,即把file.dep文件在当前Makefile文件中展开,亦即把file.dep文件的内容包含进当前Makefile文件;如果Makefile中有以file.dep为目标的规则,make会先使用规则对file.dep文件进行更新,然后将更新后的file.dep文件包含进当前Makefile文件。[网上描述] 这种关于转载 2020-12-13 13:21:50 · 6582 阅读 · 0 评论 -
进程间通信:管道、有名管道、信号量
无名管道管道是如何通信的管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条。管道的一端连接一个进程的输出。这个进程会向管道中放入信息。管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息。一个缓冲区不需要很大,它被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的时候,尝试放入信息的进程会等待,直到另一端的进程取出信息。当两个进程都终结的时候,管道也自动消失。管道是如何创建的从原理上,管道利原创 2020-06-30 17:05:15 · 261 阅读 · 0 评论 -
IO与进线程:标准IO和文件IO的区别
一、先来了解下什么是文件I/O和标准I/O:文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。标准I/O:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准I/O库处理很多细节。例如缓存分配,以优化长度执行I/O等。标准的I/O提供了三种类型转载 2020-06-16 20:43:46 · 254 阅读 · 0 评论 -
Makefile双冒号的使用规则
双冒号规则就是使用“::”代替普通规则的“:”得到的规则。当同一个文件作为多个规则的目标时,双冒号规则的处理和普通规则的处理过程完全不同(双冒号规则允许在多个规则中为同一个目标指定不同的重建目标的命令)。首先需要明确的是:Makefile中,一个目标可以出现在多个规则中。但是这些规则必须是同一类型的规则,要么都是普通规则,要么都是双冒号规则。而不允许一个目标同时出现在两种不同类型的规则中。双冒号规则和普通规则的处理的不同点表现在以下几个方面:1、双冒号规则中,当依赖文件比目标更新时。规则将会被执行。对于转载 2020-08-19 20:20:55 · 806 阅读 · 0 评论 -
多级目录下Makefile的编写_详细
前言我们刚接触makefali的时候大多都是源文件和头文件都在同一个目录下,所以在编译的时候,我们在当前目录下写一个makefile,如:main:main.o add,o gcc main.o add.o -o mainmain.o:main.c gcc -c main.c -o main.oadd.o:add.c gcc -c add.c -o add.oclean: rm -rf main.o add.o main写完后我们就可以通过命令 make 来进行文件的编译但是按照这种原创 2020-06-05 22:23:52 · 4804 阅读 · 5 评论 -
Linux下gcc的库文件及动态库搜索路径
1. 头文件 gcc在编译时如何去寻找所需要的头文件: 头文件的搜索会从-I指定的目录开始;然后搜索gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH 设置的目录;再搜索系统目录 /usr/include 和 /usr/local/include(centos7中该目录下是空的);最后搜索gcc的一系列自带目录(如/usr/include/c...转载 2020-11-30 16:54:41 · 645 阅读 · 0 评论 -
简单的聊天室(UDP)
简单的聊天室(UDP)UDP编程步骤1--创建数据报套接字 socket() : SOCK_DGRAM.2--绑定地址信息. bind() . struct sockaddr_in.3--recvfrom() 与 sendto() 适用于udp协议4--关闭套接字close().使用的f发送接收函数ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr原创 2020-07-14 17:39:03 · 321 阅读 · 0 评论 -
简单TCP服务器创建
简单TCP服务器创建实现tcp服务器的创建,实现循环与客户端聊天,并且获取客户端信息.TCP编程步骤1—创建套接字socket() == 买手机.2—套接字绑定 bind() == 绑定手机卡.3—监听套接字 listen() == 等待其他人打电话.4—接受客户端请求 accept() == 接电话.---- 进行数据的交互过程. == 通话内容.5—关闭套接字 close() == 挂掉电话.使用的函数int socket(int domain, int type,原创 2020-07-14 17:33:14 · 451 阅读 · 0 评论 -
tar压缩
tar压缩选项-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。tar -cf all.tar原创 2020-08-21 11:29:48 · 820 阅读 · 0 评论 -
配置Ubuntu静态地址
图形界面设置Ubuntu的静态ip地址右上角有一个wifi或者上下箭头的图标选择这个选项Edit Contionsipv4—>Manual(手动方式)ip :192.168.0.210netmask :255.255.255.0gatewayip:192.168.0.1DNS :8.8.8.8sudo service network-manager restart重启Ubuntu的网络管理修改为自己的ip ,注意保持网段相同命令行配置Linux网络静态i原创 2020-08-18 17:49:23 · 720 阅读 · 0 评论 -
Ubuntu下网络的配置
图形界面网络配置步骤:1、点击虚拟机 “编辑” 选项2、点击 “虚拟网络适配器“3、点击右下角的“更改设置”4、选择 “Vmnet0” 这张网卡,桥接模式5、桥接到 “自动”或者“Realtek PCle …” 有线网卡注意: 后期课程必须使用桥接模式,如果虚拟机没有桥接网卡,则必须自行修复。修改配置文件1.修改 /etc/network/interfaces 文件$ sudo vi /etc/network/interfaces/*静态IP地址设置*/auto eth0ifa原创 2020-06-01 17:28:44 · 305 阅读 · 0 评论 -
Linux软链接和硬链接
在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。硬链接根据文件的inode节点创建的链接文件。因此不能跨越文件系统。在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能原创 2020-05-30 20:38:00 · 120 阅读 · 0 评论 -
vim编辑器快捷键
Linux-VIMvim 文件名: 创建并打开文件当使用vim打开文件时默认进入命令模式命令模式:i ---- 进入插入模式shift + : ---- 进入底行模式x — 删除一个字符 nx—删除n个字符yy — 复制一行 nyy — 复制n行dd — 剪切一行 ndd — 剪切多行p — 粘贴u — 撤销G — 光标移动到文件末尾1G — 光标移动到文件头nG — 光标移动到n行/字符串 — 查找串 n原创 2020-05-30 19:16:46 · 440 阅读 · 0 评论 -
Linux-GCC
一、gcc编译过程四个过程预处理(pre-processing): 将源文件中的头文件、宏定义变量展开替换,生成 *.i 文件常用命令:gcc -E abc.c :预处理C文件gcc -E abc.c -o abc.i :将C文件预处理生成 *.i文件分析器(编译处理): 检查代码的语法结构、语法错误等,生成汇编文件常用命令:gcc -S abc.c -o abc.s :汇编处理源文件gcc -S abc.i -o abc.s :将预处理文件进行汇编,生成 *.s文件汇编原创 2020-05-30 17:42:20 · 132 阅读 · 0 评论 -
shell编程大全
shell编程一、shell脚本二、shell编程步骤三、shell变量定义变量使用变量修改变量的值单引号和双引号的区别将命令的结果赋值给变量只读变量删除变量四、shell数组定义数组数组操作五、shell特殊变量六、shell环境变量七、shell的功能语句readexprtest八、shell函数函数定义函数调用九、shell结构性语句一、shell脚本shell脚本语言是解释性语言,其本质是shell命令的有序集合。shell脚本在此处有讲解二、shell编程步骤创建shell文件vi原创 2020-05-28 20:31:52 · 950 阅读 · 2 评论 -
学习linux命令
了解shell命令shell命令提示符:username@hostname:direction$username: 系统当前登录的用户hostname: 计算机名(主机名)direction:当前用户的工作路径$ : 当前用户的身份(普通用户)#: 超级用户shell命令格式$ Command [-Options] Argument1 Argument2 …Command: 指令(命令)Options: 选项 (–purge --reinstall …)Arguement1:原创 2020-05-28 12:57:22 · 110 阅读 · 0 评论 -
bash特色
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。补全命令和文件名按tab键进行命令和文件名的补全历史命令查询命令行输入histroy 可查询历史命令行输入的内容shell特殊字符通配符*:匹配任意长度的字符串eg: ls file* :显示当前目录中所有以 file 开头的文件或目录?:只匹配一个字符eg: ls file?.txt[…] : 匹配指定的一原创 2020-05-28 11:13:11 · 160 阅读 · 0 评论 -
shell是什么
shell 简介Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。shell 命令命令:用户向内核发出的控制请求,与之交互的文本流shell:是一个命令行解释器,解释在命令行输入的命令,对应内核执行原创 2020-05-27 22:25:54 · 429 阅读 · 0 评论 -
Linux的文件存储结构
大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成:目录项:包括文件名和inode节点号。Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。数据块:包含文件的具体内容。一、目录块Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。ls命令只列出目录原创 2020-05-30 11:30:35 · 685 阅读 · 0 评论 -
Linux文件详细信息
Linux文件详细信息ls -l:文件详细信息以 drwxr-xr-- 2 wdl wdl 4096 2007-09-17 2:23 Desktop 为例第一部分:drwxr-xr–文件类型文件类型类型符号描述普通文件-指ASCLL文本文件、二进制可执行文件,以及硬件链接块设备文件b块输入/输出设备文件字符设备文件c原始输入/输出设备文件,每次I/O操作仅传送一个字符目录文件d包含若干文件或子目录符号链接文件l只保留了文件地址,而原创 2020-05-27 15:52:01 · 138 阅读 · 0 评论 -
Linux文件系统类型与Linux VFS
Linux 有着极其丰富的文件系统,大体上可分如下几类:磁盘文件系统指本地主机中实际可以访问到的文件系统,包括硬盘,CD-ROM,DVD,USB存储器,磁盘阵列等。如FAT16、FAT32、Ext3、Ext4等网络文件系统可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络进行远程的数据访问。如 nfs、cifs、samba等特殊文件系统不驻留在磁盘上的文件系统。如 proc、sysfs、ramfs、tmpfs 等Linux VFS实现以上这些文件系统并在原创 2020-05-26 23:10:10 · 161 阅读 · 0 评论 -
学Linux到底学什么
linux简介:1、嵌入式系统:以应用为中心,以计算机技术为基础,且软硬件可裁剪的专用计算机系统。2、第一个嵌入式系统:unix, 1969年3、linux与unix有何区别linux是 类unix,linux 开源的,1991年, 遵循gnu计划linux体系结构:1、操作系统组件:linux内核:多用户,多任务shell:命令行解释器,实现用户与系统交互文件系统:实用程序:gui界面、命令行应用程序、…2、终端操作:ctrl+alt+t : 打开一个新的终端ctrl+shi原创 2020-05-21 20:24:20 · 334 阅读 · 0 评论