Linux C应用编程(概念类)
文章平均质量分 95
学习Linux C应用编程的学习笔记
@ChenPi
这个作者很懒,什么都没留下…
展开
-
Ubuntu中基础命令使用
以下指令测试来自于Ubuntu18.04如果有说的不对的,欢迎指正与补充以下指令为我学习嵌入式开发中使用过最多的指令。原创 2023-12-19 19:20:32 · 1340 阅读 · 0 评论 -
P14 Linux进程间通信——消息队列.........
但在一个复杂的应用系统中,通常会使用多个相关的进程来共同完成一项任务,因此要求进程之间必须能够互相通信,从而来共享资源和信息。由于保护的缘故,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭。🌺本篇简介 : 这一章我们学习Linux进程间通信中的消息队列。所以,一个操作系统内核必须提供进程间的通信机制(IPC)。目前,Linux使用的进程间的通信方式主要有。管道(pipe)和有名管道(FIFO)🛸推荐专栏3: 《🎬 个人主页:@ChenPi。🔥 推荐专栏2: 《原创 2023-12-11 18:28:53 · 997 阅读 · 0 评论 -
P13 Linux进程间通信——管道
🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : 这一章我们学习Linux进程间通信中的管道在 Linux系统中,以进程为单位分配和管理资源。由于保护的缘故,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭。但在一个复杂的应用系统中,通常会使用多个相关的进程来共同完成一项任务,因此要求进程之间必须能够互相通信,从而来共享资源和信息。原创 2023-12-10 16:43:50 · 1020 阅读 · 3 评论 -
P12 Linux进程编程wait进程挂起
WIFEXITED(status):如果子进程正常终止,则返回 true;WEXITSTATUS(status):返回子进程退出状态,是一个数值,其实就是子进程调用_exit()或 exit()时指定的退出状态;wait()获取得到的 status 参数并不是调用_exit()或 exit()时指定的状态,可通过WEXITSTATUS 宏转换;WIFSIGNALED(status):如果子进程被信号终止,则返回 true;WTERMSIG(status):返回导致子进程终止的信号编号。原创 2023-12-10 12:48:09 · 831 阅读 · 2 评论 -
P11 Linux进程编程exec族函数
l : 使用参数列表p:使用文件名,并从PATH环境进行寻找可执行文件v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。e:多了envp[]数组,使用新的环境变量代替调用进程的环境变量。原创 2023-12-10 12:11:22 · 1043 阅读 · 0 评论 -
P10 Linux进程编程 fork创建子进程
🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : 上一章我们讲了Linux进程的概念以及获取进程ID号和获取父进程的ID这一章我们引进新的概念,父子进程Linux 是一个多用户多任务的操作系统,每个用户可以同时运行多个程序进程是程序运行的主体,包括进程的创建,调度和消亡的整个过程当用户执行一个指令或者启动一个程序时,就创建了一个进程一个运行的程序也可能有多个进程。每个进程将被分配各种资源。原创 2023-12-09 21:02:40 · 1077 阅读 · 0 评论 -
P9 LinuxC 进程概述 终端启动的程序父进程是终端
前言🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : 这一章我们学习一下Linux中非常重要的一部分——进程Linux 是一个多用户多任务的操作系统,每个用户可以同时运行多个程序进程是程序运行的主体,包括进程的创建,调度和消亡的整个过程当用户执行一个指令或者启动一个程序时,就创建了一个进程一个运行的程序也可能有多个进程。每个进程将被分配各种资源。原创 2023-12-09 20:15:32 · 1183 阅读 · 0 评论 -
P8 Linux 目录操作
🎬 个人主页:@ChenPi🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨🛸推荐专栏3: 《 链表_@ChenPi的博客-CSDN博客 》 ✨✨✨🌺本篇简介 : 在上两章中我们Linux的文件系统底下的目录结构这一章我们学习目录文件目录块当中有多个目录项(或叫目录条目)每一个目录项(或目录条目)都会对应到该目录下的某一 个文件。原创 2023-12-07 22:26:23 · 982 阅读 · 0 评论 -
P7 Linux C三种终止进程的方法
🎬 个人主页:@ChenPi🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨🛸推荐专栏3: 《 链表_@ChenPi的博客-CSDN博客 》 ✨✨✨🌺本篇简介 : 这章我们将Linux环境下终止进程的三种方法。原创 2023-12-06 21:11:29 · 593 阅读 · 1 评论 -
P6 Linux 系统中的文件类型
普通文件是最常见的文件类型;目录也是一种文件类型;设备文件对应于硬件设备;符号链接文件类似于 Windows 的快捷方式;管道文件用于进程间通信;套接字文件用于网络通信。原创 2023-12-06 20:49:52 · 1120 阅读 · 0 评论 -
P5 Linux 标准C库函数
🎬 个人主页:@ChenPi🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨🛸推荐专栏3: 《 链表_@ChenPi的博客-CSDN博客 》 ✨✨✨🌺本篇简介 : 上一章我们学了系统调用,open,read,write,lseek等等,这章我们学习一下C库函数的open,read,write函数。原创 2023-12-05 22:56:34 · 1124 阅读 · 1 评论 -
P4 Linux 文件打开,关闭,读写,增删(open,close,read,write)
🎬 个人主页:@ChenPi🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨🛸推荐专栏3: 《 链表_@ChenPi的博客-CSDN博客 》 ✨✨✨🌺本篇简介 : 本期我们学习一下关于文件操作的系统调用,Linux一切皆文件,所以这章还是比较重要的,这章主要搞定三个API,open,read,write。原创 2023-07-26 23:07:54 · 1121 阅读 · 1 评论 -
P3 Linux应用编程:系统调用与库函数
🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : 在上一章中我学习了Linux系统目录结构,这章我们来认识一下什么是系统调用和库函数在第一章的时候我们说过我们应用开发是在应用层的,但是应用层是不能直接控制内核的,所以我们要经过系统调用或者库函数来操作内核,如果对这些概念不是很了解,可以看看我前面两章说了这么多,那什么是系统调用呢?原创 2023-12-03 11:41:01 · 921 阅读 · 0 评论 -
P2 Linux系统目录结构
🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : Linux系统下的目录结构在上一章中我们说了嵌入式Linux应用开发的和裸机驱动的区别那Linux应用开发中什么最重要啊?那肯定是Linux啊毕竟Linux是排在最前面的,Linux是一个操作系统,相关概念我这里就不多讲了在Linux中有一个非常关键的特性,那就是Linux底下一切皆文件就是说Linux没有C盘D盘之分的。原创 2023-12-03 11:02:41 · 975 阅读 · 0 评论 -
P1 嵌入式开发之什么是Linux应用开发
🎬 个人主页:@ChenPi🐻推荐专栏1: 《》✨✨✨🔥 推荐专栏2: 《》✨✨✨🛸推荐专栏3: 《》 ✨✨✨🌺本篇简介 : 嵌入式Linux应用开发和裸机,驱动开发的区别从本章开始,我们要开始写一些关于Linux应用编程的东西了,为后面的嵌入式开发打下基础讲嵌入式软件开发的时候,我们绕不开三个名词,不管是校园招聘,还是我在BOSS,还是当地招聘会,我总会看到三种岗位本系列的话主要写关于我学习嵌入式Linux应用开发的过程及心得然后我们来谈一谈其中的异和同吧。原创 2023-12-02 21:50:05 · 884 阅读 · 0 评论 -
Linux线程创建,退出,等待
概念:"进程——资源分配的最小单位,线程——程序执行的最小单位"。线程是进程内部的一条执行序列或执行路径,一个进程可以包含多条线程。线程是进行资源调度和分配的基本单位。一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。原创 2023-11-13 14:54:40 · 221 阅读 · 0 评论 -
linux的热拔插UDEV机制
是一个设备管理工具,udev以守护进程的形式运行,通过侦听内核发出来的uevent来管 理。udev在用户空间运行,而不在内核空间 运行。它能够根据系统中的硬 件设备的状态动态更新设备文件,设备文件通常放在/dev目录 下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。图1:应用空间想要操作硬件经过。原创 2023-09-12 15:48:19 · 285 阅读 · 0 评论 -
学习笔记——小型ftp服务器搭建(linux环境下C实现)
自写的ftp服务器,学习刚好学到了socket相关知识,就写了一个微型的,如果有哪里有什么bug或者不对的,欢迎指正原创 2023-09-10 21:53:39 · 368 阅读 · 0 评论 -
exec 族函数 和 system()函数
我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。原创 2023-08-07 18:34:34 · 251 阅读 · 0 评论 -
监视子进程 wait等待子进程退出,孤儿进程,僵尸进程(十四)
对于许多需要创建子进程的进程来说,有时设计需要监视子进程的终止时间以及终止时的一些状态信 息,在某些设计需求下这是很有必要的。系统调用 wait()可以等待进程的任一子进程终止,同时获取子进程 的终止状态信息.原创 2023-08-06 23:59:16 · 186 阅读 · 0 评论 -
linux进程——父子进程(十三)
进程其实就是一个可执行程序的实例,可执行程序就是一个可执行文件,文件是一个 静态的概念,存放磁盘中,如果可执行文件没有被运行,那它将不会产生什么作用,当它被运行之后,它将 会对系统环境产生一定的影响,所以可执行程序的实例就是可执行文件被运行。进程是一个动态过程,而非静态文件,它是程序的一次运行过程,当应用程序被加载到内存中运行之后 它就称为了一个进程,当程序运行结束后也就意味着进程终止,这就是进程的一个生命周期。原创 2023-08-05 21:33:33 · 911 阅读 · 0 评论 -
向进程发送信号和杀死进程——kill(), raise()函数(十二)
与 kill 命令相类似,Linux 系统提供了 kill()系统调用,一个进程可通过 kill()向另一个进程发送信号;进程中将信号发送给另一个进程是需要权限的,并不是可以随便给任何一个进程发送信号,超级用户root 进程可以将信号发送给任何进程,但对于非超级用户(普通用户)进程来说,其基本规则是。从上面介绍可知,当 sig 为 0 时,仍可进行正常执行的错误检查,但不会发送信号,这通常可用于确定 一个特定的进程是否存在,如果向一个不存在的进程发送信号,原创 2023-08-05 18:42:28 · 528 阅读 · 0 评论 -
信号的概念与进程信号处理 (信号篇上)(十一)
信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够 打断程序当前执行的正常流程,其实是在软件层次上对中断机制的一种模拟。大多数情况下,是无法预测信 号达到的准确时间,所以,信号提供了一种处理异步事件的方法。原创 2023-08-04 19:02:46 · 264 阅读 · 2 评论 -
创建,删除,打开,关闭目录,以及获取当前目录,目录跳转(十)
目录块当中有多个目录项(或叫目录条目),每一个目录项(或目录条目)都会对应到该目录下的某一 个文件,目录项当中记录了该文件的文件名以及它的 inode 节点编号,所以通过目录的目录块便可以遍历找 到该目录下的所有文件以及所对应的 inode 节点。原创 2023-08-03 23:15:23 · 208 阅读 · 0 评论 -
文件时间属性(九)
文件的时间属性虽然会在我们对文件进行相关操作(譬如:读、写)的时候发生改变,但这些改变都是 隐式、被动的发生改变,除此之外,还可以使用 Linux 系统提供的系统调用显式的修改文件的时间属性。原创 2023-08-03 19:38:07 · 319 阅读 · 0 评论 -
文件所属主及文件访问权限(八)
首先对于有效用户 ID 和有效组 ID 来说,这是进程所持有的概念,对于文件来说,并无此属性!有效 用户 ID 和有效组 ID 是站在操作系统的角度,用于给操作系统判断当前执行该进程的用户在当前环境下对 某个文件是否拥有相应的权限。在 Linux 系统中,当进程对文件进行读写操作时,系统首先会判断该进程是否具有对该文件的读写权限,那如何判断呢?自然是通过该文件的权限位来判断,struct stat 结构体中的 st_mode 字段中就记录了该 文件的权限位以及文件类型。在上一篇博文中有讲。原创 2023-08-03 16:55:14 · 192 阅读 · 0 评论 -
获取文件属性——stat()函数(七)
譬如,并不想通过打开文件来得到文件属性信息,那么就使用 stat,如果文件已 经打开了,那么就使用 fstat。在以前学的 open 函数的第三 个参数 mode 时也用到了类似的图,唯一不同的在于 open 函数的 mode 参数只涉及到 S、U、G、O 这 12 个 bit 位,并不包括用于描述文件类型的 4 个 bit 位。lstat()与 stat、fstat 的区别在于,对于符号链接文件,stat、fstat 查阅的是符号链接文件所指向的文件对 应的文件属性信息,而。上面代码示例的方法都可用。原创 2023-08-02 22:34:57 · 2654 阅读 · 0 评论 -
Linux系统文件类型(六)
普通文件是最常见的文件类型;目录也是一种文件类型;设备文件对应于硬件设备;符号链接文件类似于 Windows 的快捷方式;管道文件用于进程间通信;套接字文件用于网络通信。原创 2023-08-02 22:11:00 · 600 阅读 · 0 评论 -
C语言标准库(五)
所谓标准 I/O 库则是标准 C 库中用于文件 I/O 操作(譬如读文件、写文件等)相关的一系列库函数的集合,通常标准 I/O 库函数相关的函数定义都在头文件中,所以我们需要在程序源码中包含头文件。原创 2023-07-30 21:29:35 · 162 阅读 · 1 评论 -
复制文件描述符1dup函数,共享文件与原子操作
文件IO深入篇下篇,介绍如何复制文件描述符,什么是文件共享,什么是原子操作与竞争冒险原创 2023-07-30 18:59:53 · 210 阅读 · 1 评论 -
Linux 系统如何管理文件,三种终止进程的方法: exit、_exit、_Exit
磁盘分为两个区域,数据区(用于存储文件中的数据)和inode 区(inode 表),每一个文件都对应一个 inode,inode 实质上是一个结构 体,这个结构体中记录了文件了不同信息,通过 inode 编号从 inode table 中找到对应的 inode 结构体,根据 inode 结构体中记录的信息,确定文件数据所在的 block,并读出数据。原创 2023-07-29 15:45:38 · 715 阅读 · 0 评论 -
什么是系统调用?.应用编程与裸机编程、驱动编程有什么区别?
应用编程概念原创 2023-07-25 21:28:34 · 201 阅读 · 0 评论