![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 63
要努力丫!
别浪费美好时光,世界都为你敞亮!
展开
-
嵌入式系统之linux系统编程---17 管道通信(无名管道、有名管道)
1、一些说明有名管道与无名管道的区别是文件系统里面有没有文件名。在应用层中有“进程a”和“进程b”两个进程,这两个进程在应用层里面是不能直接交流的,它们必须通过内核才能进行通讯;利用管道,进程a往管道里面写数据,进程b从管道中去读数据,这样就实现了进程a和进程b之间的通讯。2、无名管道无名管道只能实现有亲缘关系间的进程通信,比如说父子进程。像上面提到的进程a与进程b,它们之间无亲缘关系,就不能使用无名管道了。(1)pipe函数作用:创建管道头文件#include<unistd.h&g原创 2022-04-11 16:19:32 · 2068 阅读 · 0 评论 -
嵌入式系统之linux系统编程---16 守护进程
1、基本概念孤儿进程—父进程结束以后,子进程还未结束,这个子进程就叫做孤儿进程。但是孤儿进程会被系统的init(pid号为1)进程所领养,此时它的父进程就变为了init进程。僵尸进程—子进程结束以后,父进程还在运行,但是父进程不去释放进程控制块,这个子进程就叫做僵尸进程。守护进程—守护进程运行在后台,不跟任何控制终端关联。2、关于孤儿进程的实例3、关于僵尸进程的示例4.怎么创建一个守护进程?有两个基本要求:a.守护进程必须作为 init 进程的子进程b.守护进程不跟控制终端交互。创建守原创 2022-04-11 10:55:14 · 925 阅读 · 0 评论 -
嵌入式学习之linux系统编程---15 进程控制(ps、kill、孤儿进程、僵尸进程、wait命令)
1、ps和kill命令ps和kill命令的格式ps命令:ps命令可以列出系统中当前运行的那些进程命令格式:ps[参数]命令功能:用来显示当前进程的状态常用参数:auxkill命令kill命令用来杀死进程eg: kill -9(SIGKILL) PID号9号代表的是SIGKILL信号...原创 2022-03-31 21:31:55 · 1266 阅读 · 0 评论 -
嵌入式学习之linux系统编程---14 进程控制(fork、execl命令)
1、fork函数—创建进程的函数fork函数:头文件:#include <unistd.h>函数原型:pid_t fork(void)fork函数的返回值:fork函数的返回值有三种,(1)创建失败,则fork返回一个负值;(2)若创建成功,则在父进程中,fork返回新创建的子进程的pid号;同时,在子进程中,fork函数返回0值。2、fork函数例程要求:让进程a(父进程)去创建新的进程b(子进程)#include <unistd.h>#include <原创 2022-03-30 17:28:57 · 2946 阅读 · 0 评论 -
嵌入式学习之linux系统编程---13 进程基础知识
1、什么是进程?进程指正在运行的程序。何为程序?程序是指保存在存储介质(如:磁盘)上的,经过编译的可执行的二进制文件。(程序是静态的,进程是一个动态的概念;换句话讲,进程就是程序的执行过程)进程也是操作系统分配资源的最小单位。注:打开windows电脑的资源管理器即可看到进程;后台程序又称为“守护进程”2、进程ID每个进程都有一个唯一的标识符,既进程 ID,简称 pid。3、进程间的通信有几种方法?4、进程间的三种基本状态及转换举个例子来理解这三种状态:(1)现在有一个进程,除了cpu原创 2022-03-30 15:36:11 · 172 阅读 · 0 评论 -
嵌入式学习之linux系统编程---12 静态库与动态库
1、什么是库?为什么要使用库?库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率,加快开发速度。2、linux下库的种类linux下库分为两种:静态库与动态库(1)静态库:静态库在程序编译的时候会被链接到目标代码里面(即:编译程序时,静态库中的函数被拷贝到当前的程序中),所以我们的程序就不再需要该静态库了。因此编译出来的体积就比较大,静态库以lib开头,以.a结尾。(2)动态库(共享库):动态库在程序编译的时候不会被链接到目标代码里面,而是在程序运行的时候被载入的,所以在程序运行原创 2022-03-30 12:39:27 · 1560 阅读 · 0 评论 -
嵌入式学习之linux系统编程---11 综合练习二
练习二:在练习一的基础上,利用学到的目录IO的知识,修改练习一的代码,增加以下需求:(1)打印我们需要拷贝的目录下的所有文件名,并拷贝我们需要的文件;(2)通过键盘,输入我们要拷贝的文件的路径和文件名等信息分析:“打印需要拷贝的目录下的所有文件名”使用opendir以及closedir函数可以完成该操作;“拷贝我们需要的文件”这个属于练习一的内容。“通过键盘,输入我们要拷贝的文件的路径和文件名等信息”可以使用c语言中的scanf函数来实现。c代码如下:在这里插入代码片...原创 2022-03-30 10:32:16 · 101 阅读 · 0 评论 -
嵌入式学习之linux系统编程---10 综合练习一
练习一:通过命令行操作,将a.c文件里面的内容写到b.c里面c代码如下:在这里插入代码片练习二:在练习一的基础上,利用学到的目录IO的知识,修改练习一的代码,增加以下需求:(1)打印我们需要拷贝的目录下的所有文件名,并拷贝我们需要的文件;(2)通过键盘,输入我们要拷贝的文件的路径和文件名等信息分析:“打印需要拷贝的目录下的所有文件名”使用opendir以及closedir函数可以完成该操作;“拷贝我们需要的文件”这个属于练习一的内容。“通过键盘,输入我们要拷贝的文件的路径和文件名等信息”可原创 2022-03-29 21:37:45 · 507 阅读 · 0 评论 -
嵌入式学习之Linux系统编程---9 目录IO之readdir函数
1、readdir函数的函数原型#include <dirent.h>struct dirent *readdir(DIR *dirp);对于readdir函数来说,它只有目录流指针这一个参数,这个目录流指针就是使用opendir这个函数大尅的返回值。该函数在man手册的第三页,该函数如果执行成功,则返回的是一个结构体指针,失败则返回的是NULL,读到末尾也是返回NULL。2、readdir函数的应用示例3、思考如果读取的目录下面会有很多个文件(不止一个文件),那么读取出来的结果原创 2022-03-29 20:09:53 · 4495 阅读 · 2 评论 -
嵌入式学习之linux系统编程---8 目录IO之opendir和closedir函数
1、函数原型opendir函数原型#include<sys/types.h>#include<dirent.h>DIR *opendir(const char*name);"DIR opendir(const charname);"代表的是:返回值是目录流指针,如果失败的话返回值是null,成功返回目录流指针。“const char*name”指的是打开的目录以及路径。closedir函数原型#include<sys/types.h>#include&l原创 2022-03-29 16:34:59 · 992 阅读 · 0 评论 -
嵌入式学习之linux系统编程---7 目录IO之mkdir函数
1、目录IO与文件IO的区别目录IO文件IOopendir—打开目录open—打开文件mkdir—创建目录-----------readndir—读目录read—读文件closedir—关闭目录close—关闭文件区别:在之前的博客中提到的文件IO和标准IO都是对文件的操作;而目录IO都是对目录的操作。正如表格中提到的:(1)针对文件IO,若想创建一个文件,可以在打开文件的时候加入“O_CREAT”参数;但是对于目录IO来说,这种方式是无效的,创建目原创 2022-03-24 18:09:22 · 1581 阅读 · 0 评论 -
嵌入式学习之linux系统编程---6 文件IO之lseek函数
1、了解lseek函数若一个矩形代表一个文件,这个矩形由七个小矩形组成,这七个小矩形(从左到右)分别代表该文件的第1,2,3,4,5,6,7个字节。当我们打开文件时,会有一个指针指向这个文件的第一个字节;使用read函数进行读操作,假如读了两个字节,指针就会向后移动两个字节,从“1”的位置移至“3”;当再次执行读操作时此时会从第一个字节开始读还是接着从“3”的位置开始读呢?答案是从指针指向的位置“3”开始读。同样地,写操作碰到这种这种情况也是如此。如果想要移动指针,需要如何移动呢?需要使用lseek函原创 2022-03-23 23:01:00 · 1424 阅读 · 2 评论 -
嵌入式学习之linux系统编程---5 文件IO之write函数
1、write函数的函数原型#include <unistd.h>ssize_t write(int fd,const void *buf,size_t count)ssize_t write(int fd,const void *buf,size_t count) 指的是把count字节的数据从buf指向的缓冲区写到文件描述符为fd的指向的文件中,它实际返回的值是实际写入的个数。ubuntu界面利用man手册可查看write函数的相关信息,该函数的头文件与read、close的头文件原创 2022-03-16 17:02:40 · 2481 阅读 · 0 评论 -
嵌入式学习之linux系统编程---4 文件IO之read函数
1、read函数的函数原型#include <unistd.h>ssize_t read(int fd,void *buf,size_t count)在函数原型中,ssize_t 指的是返回值;fd是要读取的文件的文件描述符;* buf是万能指针,一个任意类型的指针,议案是传进去一个地址;count是要读取的字节个数。同样地,在ubuntu界面输入:man 2 read可以查看read函数的相关信息。该函数的作用是从文件描述符fd所指定的文件中读取“count”字节的大小到“buf”所原创 2022-03-16 11:30:55 · 4172 阅读 · 0 评论 -
嵌入式学习之linux系统编程---3 文件IO之close函数
1、close函数的函数原型#include <unistd.h>;int close(int fd);该函数的作用是:关闭一个文件描述符。fd就是文件描述符。在ubuntu界面输入“man 2 close”即可查看close函数的相关信息,“2”是指close在man手册的第2页。2、思考:close函数里面的fd参数是怎么来的呢?首先,每一个文件都有文件描述符与之对应的;文件描述符是打开文件之后由系统给我们分配的;当我们关闭一个文件时,我们使用的fd是从open这个系统调用里面返原创 2022-03-15 16:07:47 · 2403 阅读 · 0 评论 -
嵌入式函数之linux系统编程---2 文件IO之open函数
1、关于文件描述符对于文件IO来说,一切都是围绕文件描述符来进行的。在linux系统中,所有打开的文件都有一个对应的文件描述符。文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文件描述符。当我们对一个文件作读写操作时,我么使用open函数返回的这个文件描述符会标识该文件,并将其作为参数传递给read或write函数。2、关于文件IO和标准IO3、关于opeh函数的代码:#include <stdio.h>#include <stdlib.h>#原创 2022-03-14 11:00:09 · 1837 阅读 · 0 评论 -
嵌入式学习之linux系统编程----1 了解linux编程并且在ubuntu以及ARM上运行测试程序
1、何为linux系统编程?linux系统编程也称为linux下的高级编程,它介于应用层与驱动层之间。一般来说分为三个层面,分别是:应用层(写一个qt程序或者c程序就属于是应用层面)、驱动层(比如写一个蜂鸣器、led等)以及硬件层(与开发板相关的)。2、linux系统编程基本程序框架先从最简单的程序开始说起(helloworld.c)#include <stdio.h>#include <stdlib.h>int main(void){ printf原创 2022-03-12 16:11:29 · 2754 阅读 · 0 评论 -
嵌入式之linux入门篇
将这些天学习的linux入门知识上传过来,方便之后的巩固。原创 2022-03-10 17:51:51 · 328 阅读 · 0 评论