Linux
文章平均质量分 51
学习Linux的基础
啵啵520520
这个作者很懒,什么都没留下…
展开
-
如何创建守护进程
中,每个系统与用户交互的界面叫做终端。从终端运行的进程都会依附于这个终端,所有进程都是由终端进行管理,当关闭终端时所有依附于终端的进程都会被关闭。让子进程变为后台进程,形式上就脱离了终端,子进程变为孤儿进程。如果某个进程不想受到用户进程或终端控制,只需要把进程变为守护进程。守护进程就是要突破这种限制,在子进程中创建新会话,子进程变为会话组组长。如:标准输入、标准输出、标准错误。1. 创建子进程,父进程退出。关闭父进程打开的文件描述符。3.修改子进程工作路径。在子进程中修改文件权限。.........原创 2022-08-10 22:58:39 · 246 阅读 · 0 评论 -
线程间的通信——同步与互斥
保证资源访问的完整性,只要任务要访问共享资源都用互斥锁的方式来访问 来保证互斥,在进行操作前,加锁;懂得了进程间的信号量通信那么,线程间的同步原理一样,下面来进行一个示例来看看,如何使用这些函数。在多个任务(进程、线程)都要访问某个共享资源,只能有一个任务去访问资源,其他任务阻塞等 待,等待任务访问完成。线程之间也是有通信的,当同一个进程执行多个线程时,线程这个时候就不知道怎么执行那个线程。互斥锁会让这些线程进行抢上锁,就是看谁抢的快,谁就先执行,且没有次数。了解了同步,那么来看一下互斥是怎么样的操作?..原创 2022-08-18 19:30:18 · 245 阅读 · 0 评论 -
进程的概念及简单实现
进程 :是一个动态空间(从程序的开始执行(创建进程),直到程序结束),也就是程序的一次执行过程。进程还有其他名称:1、可以独立参与调度的任务2、申请资源和释放资源的总称进程与程序的区别程序:程序是静态的,只是存在于磁盘上的命令的集合进程:进程是动态的,负责程序的创建、调度、执行、消亡(释放)等过程。而管理进程的叫做进程管理器(负责向内核进行空间的申请资源)如何识别不同的进程呢?通过进程的进程号(PID)PID:唯一进程号标识着一个进程。......原创 2022-08-10 22:43:39 · 415 阅读 · 0 评论 -
进程间通信之消息队列
消息队列是进程间通信的方式之一,从名字上来说,消息队列与队列有关系的,消息的列表,以队列的形式来存储这个列表,所有进程都可以访问这个队列列表。多个进程可以对这个 队列进行添加、删除消息。消息队列是根据消息类型进行发送/接收,也就是标号,一个主写,另外的进程去查看这个队列,看队列里面是否有自己需要查找的标号。消息队列的使用需要完成以下步骤:1. 创建/打开消息队列2. 读取消息、添加消息3. 删除关闭消息队列下面来介绍一下消息队列相关函数:1、创建打开消息队列intmsgget(............原创 2022-08-15 14:23:20 · 1392 阅读 · 0 评论 -
进程间通信之信号
在进程之间除了前面四种通信之外还有一种,其实Linux系统内核也是根据信号来进行进程的通信。在linux中,信号是一种异步通信的方式,既在进行通信时产生一个通知,发送对方进程,对方进程收到这个通知过后,按照通知进行处理。在内核中规定的信号有62个信号(kill -l),每一个信号都有一个作用,当进程接收到信号,就会进行操作。除了以下三个信号外,其他信号默认都是终止(结束)进程:1、19) SIGSTOP---暂停进程2、20) SIGTSTP----暂停进程。...原创 2022-08-17 19:48:07 · 240 阅读 · 0 评论 -
进程间通信之管道
在内核的空间中,预留了一段,可以用作进程之间通信的管道,管道的操作方式是用文件IO操作方式来进行编写。进行管道操作的文件是一种特殊的文件,在内存的中进行操作。在管道中分为无名管道和有名管道。:只能用于具有亲属关系的进程之间,在父进程打开管道文件,在创建子进程,子进程也会拷贝父进程中的文件描述符,子进程也就可以操作管道:在文件系统中有这样一个名字的管道文件,打开之后在内存当中。在文件系统中的管道文件没有任何数 据,大小为01、无名管道。...原创 2022-08-16 23:57:03 · 52 阅读 · 0 评论 -
进程间通信之信号灯(信号量)
在多个进程同时执行在执行通信时,由写部分必须有先后,为了保证按照指定的要求进行执行,这个时候就引入了生产者消费者模型。生产者:就是制作一个可以通信的标志位,对标志位进行++操作,从而生产资源,也可理解为(释放资源,进V操作)。消费者:顾名思义就是当生产者生产过后,其标志位发生变化,然后操作之后进行消费(其实信号灯的操作就是这样,消费者随时去查看生产者生产没有,生产力消费者就消费。在进程间通信的时候,需要将读程序和写程序都要进行运行才可以,否则不会进行工作。信号灯读操作,和写差距不大。......原创 2022-08-15 19:25:00 · 261 阅读 · 0 评论 -
线程的基本概念以及实现
引入了在一个进程中有多个任务,每个任务有自己的私有空间,也有共用的共享空间,把任务也按照进程一样进行cpu。当这个程序编译运行过后,他先打印sum2函数结果,在10S后进程结束。从上例看出,线程就是另外的函数,让进程拥有同时执行多个任务功能。,只是多个线程和多个进程一样同时执行(我的理解就是相当于一个。,而这些进程就是不同任务,通过时间片进行执行)。了解了线程,那么如何进程线程的操作呢?在进程中创建线程,而。2、静态数据(长时间不会变化的数据)2、等待进程结束,回收线程资源。...原创 2022-08-18 18:48:08 · 126 阅读 · 0 评论 -
进程间通信之共享内存
在内核中留出一段内存区,可以由需要访问的多个进程把内存区的地址映 射到自己的进程中,可以操作这段空间,可以进行通信。进程就可以直接读写这段空间,避免拷贝,提高效率。其实这种通信的话,在进行通信的时候,一但共享内存的值发生改变,那么其内存空间的值也就发生改变了。· 2. 映射共享内存,把共享内存的空间映射到进程中(以地址提供地址)2、 映射共享内存,把共享内存的空间映射到进程中(以地址提供地址)4. 撤销共享内存映射。5. 删除共享内存对象。使用共享内存需要用到的函数。.3、撤销共享内存映射。..原创 2022-08-14 20:04:49 · 555 阅读 · 0 评论 -
网络传输----TCP
TCP协议是UDP协议的改进版,TCP协议可以,TCP协议的优势如下:1、TCP协议提供可靠的传输服务(不会出现错误、乱码、丢失、误码、重复)2、面向连接的传输方式3、一条TCP只能进行两个端点一对一通信,通信双方固定,就是连接的两个点。如果想实现多机则需要创建多条TCP。4、面向字节流传输(数据只有先后之分,也就是一个发数据一个收数据错开,不可能同时收发数据)半双工模式5、可靠传输:有拥塞控制、流量控制、超时重传。...原创 2022-08-23 18:29:10 · 1236 阅读 · 0 评论 -
IO模型(阻塞,非阻塞,多路复用)
在IO 多路复用模型中,对于每一个socket,一般都设置成为non-blocking,但是,整个用户的进程其实是一直被block的。但是不知道饭能什么时候做好,只好在餐厅等,而不能去逛街,直到吃完饭才能去逛街,中间等待做饭的时间浪费掉了。与第二个方案差不多,餐厅安装了电子屏幕用来显示点餐的状态,这样我和女友逛街一会,回来就不用去询问服务员了,直接看电子屏幕就可以了。这样每个人的餐是否好了,都直接看电子屏幕就可以了,所以我们逛一会,回来询问服务员饭好了没有,来来回回好多次,饭都还没吃都快累死了啦。.....原创 2022-08-25 18:34:18 · 2430 阅读 · 0 评论 -
OSI网络模式——网络层
在因特网(互联网)中,有非常多的网络,对每一个网络进行一个标记,叫做网络地址,一个 网络中也有非常多的主机,对一个网络中主机进行标记编号,叫做主机地址,得到一个主机在 网络层的地址,也叫做ip地址。可能申请的网络地址,相对比较大,可以表示的主机非常多,可以把原先大的网络划分成多个小的网络。mac地址不具备区分不同网络的特点,如果主机接入了因特网,则mac地址和ip地址都需要。ip地址是网络层对计算机(主机)的编号,ip地址是因特网中,主机唯一的地址(全球唯一)主机地址:一个网络中,每个主机的编号。...原创 2022-08-18 23:39:12 · 221 阅读 · 0 评论 -
网络服务器模型
它用于等待客户端连接,把多个客户端放到等待队列当中。而服务器可以有多个连接请求,进行监听,可以取出一个连接请求,然后创建一个通信套接字与一个客户端进行通信(进行与客户端进行一对一通信)。一次只与一个客户端进行通信,当与一个客户端通信完成后,再与下一个客户端进行通信。服务器(服务端)通常处理多个客户端通信,服务端则需要可以和多个客户端进行通信。后与客户端进行处理,还可以与其他客户端进行连接,可以同时与多个客户端进行操作。在服务器中,可以进行多个客户端的连接请求,同时进行通信接受一个客户端连接请求。原创 2022-08-25 16:50:55 · 254 阅读 · 0 评论 -
网络编程之网络基础知识
网络与网络之间通过各种中继连接,形成更大的网络,就叫做互联网。原创 2022-08-18 19:48:31 · 818 阅读 · 0 评论 -
网络编程传输层——UDP通信
在物理层、数据链路层、网络层解决了主机和主机之间能够发送接收数据,但是在计算机网络中,主机的通信主体还是进程,而传输层则,所谓传输层协议也是。和(可以理解为你要从那个地方传进去),设计了一个端口号来标识主机中的进行网络通信的进程。port:16bit整形(两个字节)端口号只在本机上有作用,在不同主句中同一个程序执行,也可以用不同的端口号。什么是UDP协议?UDP协议(用户数据报协议)(非面向连接),不需要提前把两个程序关联起来(想发给谁就发给谁)。,应用程序要发送的数据,直接封装在udp。原创 2022-08-21 23:38:24 · 2368 阅读 · 0 评论 -
标准IO操作
由 ANSI C标准进行声明,其是在系统调用构建,使用方便,标准IO库函数都封装在一个头文件中,可直接调用。1、fprintf() --- 从程序输出到文件 (既写文件)使用库函数进行IO操作,既输入、输出、读、写等操作。5、fgets() --- 多个字符读。4、fputc() --- 单个字符写。6、fputs() ---多个字符写。1、打开文件 fopen()fgetc() --- 单个字符读。3、打印错误码 perror()2、关闭文件 fclose()2、输入输出(读写文件)......原创 2022-08-07 20:23:45 · 201 阅读 · 0 评论 -
关于目录文件操作
1、打开目录 opendir()原创 2022-08-09 13:33:17 · 40 阅读 · 0 评论 -
标准IO的缓冲机制
用于缓存要进行读、写的数据,实现多次读写文件内容,只需要内核操作一次文件就可以,提高效率。缓冲区用于减少应用程序访问内核资源次数,只有当。:当缓冲区被填满或出现特定的条件,才会刷新缓冲区。时,才将数据进行读写到文件或者程序的内存空间中。当执行程序时,系统默认为程序打开终端文件,可以设置打开文件的缓冲类型以及缓冲大小。中使用文件时,会对每个文件在内存中申请。三个特殊打开的文件:终端文件。:当输入输出遇到新行符(:不进行缓存,直接刷新。setvbuf()函数。......原创 2022-08-08 11:35:58 · 568 阅读 · 0 评论 -
多文件编程
为实现一个程序,将程序的功能分成多个函数,将实现不同功能的函数封装起来,最后被其他程序进行调用实现功能。既将一个文件中的函数,按照一定当时分别写在多个文件中,在编译编译多个文件合并成为一个程序。gcc xxx1.c xxx2.c xxx3.c [-o 目标名]1. 编写代码,分为多个文件编写,把多个功能函数写在不同的文件中。2. 在调用函数的文件,把被调用的函数进行声明。声明:通常会使用一个文件来进行声明,用作声明的文件叫做头文件。#ifndef 宏定义。#define 宏定义。.........原创 2022-08-09 13:12:54 · 449 阅读 · 0 评论 -
静态库和共享库(动态库)的制作
共享库:在进行编译程序时,不会把动态库中的内容添加到目标代码程序中,只是做一个标记,程序在执行也需要动态库,因此程序体积偏小。:在进行编译程序时,把静态库中的代码函数内容添加到目标代码程序中,程序在执行时就不需要再额外使用库。gcc -o 可执行程序目标 xxxx.c -L路径 -l。新建文件(或添加已经存在的文件中)来存储当前动态库的路径,然后。c、使用静态库,进行编译可执行程序。c、使用动态库,进行编译可执行程序。b、创建静态库,就是把二进制文件。b、创建动态库,就是把二进制文件。路径(L.当前位置).原创 2022-08-09 13:22:26 · 115 阅读 · 0 评论 -
IO操作概念
操作系统提供函数,提高系统安全性,为应用程序提供访问内核的接口。1、普通文件 (1)、字符文件 (2)、二进制文件。文件:一组有关数据的集合 文件名:这组数据的名字。输入(input):从文件输入到程序中(内存空间)读(read):从文件读取信息到程序(内存空间)写(write):从程序(内存空间)写道文件中。输出(output):从内存空间输出到文件中。,应用程序想要得到这些资源时,需要通过。IO:输入输出,对程序的输入与输出。linux系统中所有文件均属于。......原创 2022-08-07 19:31:07 · 573 阅读 · 0 评论 -
exec函数族
下面来进行exec函数族详细的分析以及每一个函数的用法,在加上一个小小的示例,这样更容易懂得exec函数。execlp()函数:从PATH环境变量中查找文件并执行,就是把路径已经选择好是一个固定路径,相对于execl函数,可以不写上完整路径,从指定路径中查找替换的程序。对exec函数族的理解就是用一个新的程序替换掉当前程序,一般这种都是配合父子进程或者其他函数通信来使用。也就是说如果你的进程调用了exec函数族,那么当前正在运行的代码程序将全部被exec函数引进来的新程序代码所代替。......原创 2022-08-14 18:53:18 · 249 阅读 · 0 评论 -
IO操作所用到的基础函数操作
【代码】IO操作所用到的基础函数操作。原创 2022-08-25 22:16:07 · 70 阅读 · 0 评论 -
针对文件属性
在linux中获取任意一个文件的属性内容(const char *pathname, struct stat *statbuf) ---获取文件的属性文件属性结构体:struct stat 类型 成员: mode_t st_mode;文件类型与文件权限文件权限:rwx rwx rwx:最少需要9位就可以表示(8-0位,9位来表示)文件类型:7种类型:最少需要3位就可以表示(15-12位,4位来表示)就在成员变量 st_mode。......原创 2022-08-10 21:27:07 · 107 阅读 · 0 评论 -
文件IO操作
文件位置偏移,偏移出文件大小,在文件大小以外的位置进行操作(写),中间空洞位置全为0。,是系统调用函数,不再是库函数的一部分,而是系统的一部分。有缓冲区,提高效率 ,尽量减少内核read/write。5、lseek() --- 文件读写偏移量。4、close() --- 关闭文件。都要调用内核的文件操作的系统调用。2、read() --- 读操作(3、write() --- 写操作。1、open() ---打开文件。,每次都是直接操作具体的文件,标准IO与文件IO的区别。(修改文件当前操作位置)......原创 2022-08-08 13:07:24 · 118 阅读 · 0 评论 -
针对Linux进行的优化修改
1、修改vim的TAB键值为4个字符首先打开VIM的/etc/vim/vimrcvi /etc/vim/vimrc然后在文件末尾添加以下set ts=42、vim编辑器显示行号在上面的同样操作下,在下一行输入set nu原创 2022-12-13 16:37:19 · 148 阅读 · 0 评论 -
linux操作指令
如果apt-file search filename输出的内容太多,您可以尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文件名)或者类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文件,如果您要查找的是某个特定的执行文件的话,这样做是有帮助的)。,注意:此时的文件名必须是要升级软件的升级补丁。...原创 2022-08-11 17:41:33 · 39 阅读 · 0 评论 -
裸机开发之驱动开发(中断的实现)
2、在设备树中添加自己的硬件设备信息---添加key3节点-----描述当前设备的的信息内容(中断号) arch/arm/boot/dts/exynos4412-fs4412.dts:实现硬件描述(中断号):就是一个号码,中断控制器管理所有中断的编号,外设连接的引脚就对应了引脚的中断控制器的中断号,有硬件设备----设备的中断号。1、(外设产生中断,驱动要能检测到中断---申请中断(根据中断号))3、在驱动中申请中断,实现中断处理。二、实现驱动工作----中断驱动应该做什么。原创 2022-10-16 22:52:44 · 781 阅读 · 0 评论