![](https://img-blog.csdnimg.cn/20210812202848253.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux系统编程
文章平均质量分 79
Linux系统编程,保含shell脚本编写、文件IO、进程管理、进程间通信、sockt套接字和多线程
money的大雨
路遥遥
展开
-
C语言标准I/O
流是C语言对I/O操作的一种抽象,在C语言的I/O操作只是从程序移进或移出字节,这便是字节流。C程序中大多数流是全缓冲的,即写入数据时,程序先把数据放入缓存(buffer),等到缓存满了,再把里面的数据会一次性刷新(flush)到设备或磁盘文件。这时,缓存区就空了,程序再把新的数据放入缓存,重复整个过程。原创 2023-01-29 01:21:37 · 335 阅读 · 0 评论 -
Linux C 调度程序
父进程周期性创建子进程使用execv启动一次服务程序。原创 2022-11-26 21:03:22 · 155 阅读 · 0 评论 -
C语言在Linux终端打印像素时钟
show.hshow.c时钟代码main.c原创 2022-10-03 21:41:19 · 677 阅读 · 0 评论 -
socket网络编程常用C语言api函数(Linux)
网络编程常用函数 字节序 ip转换 地址结构体 socket相关函数 数据读写 获取地址信息 获取或者设置套接字属性 通过域名或地址获取主机信息原创 2022-09-27 02:32:25 · 676 阅读 · 0 评论 -
Linux timerfd
获得定时器距离下次超时还剩下的时间,成功返回0,失败返回-1,并存储错误码到errno。如果调用时定时器已经到期且it_interval不为0,调用此函数之后定时器重新开始计时。启动或关闭fd对应的定时器,成功返回0,失败返回-1,并存储错误码到errno。timerfd是Linux提供的一个纳秒级的定时器文件,利用文件描述符fd操作。如果不为NULL,则用来存储当前时间。设置第一次超时时间和之后的超时周期。创建一个timer对象并返回。...原创 2022-07-28 21:43:22 · 439 阅读 · 0 评论 -
Makefile的简单使用方法(不详细)
Makefile概述Makefile的规则示例变量符号说明示例概述Makefile是类似于shell的一种脚本文件,其描述了整个工程所有文件的编译顺序、编译规则,实现了“自动化编译”的效果,免去了手动编译时带来的麻烦,且在Makefile中可以使用系统shell所提供的任何命令来完成想要的工作。make是一个命令工具,它为Makefile脚本文件进行解释。当make 命令被执行时,它会扫描当前目录下Makefile找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描Makefile原创 2021-10-04 23:22:50 · 1906 阅读 · 0 评论 -
shell脚本编程基础知识大全
shell编程shell简介脚本的调用形式二级目录三级目录shell简介shell是一个命令行解释器,它读取用户输入,然后执行命令。shell的用户输入通常来自于终端(交互式shell)或来自于文件(shell脚本)。-UNIX系统上有很多种Shell,Linux下bash最为常用。shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行。脚本的调用形式1.打开终端时系统自动调用:/etc/profile原创 2021-08-06 23:40:22 · 833 阅读 · 0 评论 -
Linux系统编程:系统调用
系统调用概述系统调用主要功能系统调用的返回值系统调用与库函数的关系系统调用的过程系统调用遵循的规范概述操作系统是控制和管理计算机系统的硬件和软件资源的一种系统软件。Linux系统编程是在操作系统之上利用系统调用、C库进行对系统资源进行访问。系统编程使用户能更好更方便地操作硬件设备的同时也对硬件设备起到了保护作用。系统调用是linux内核为用户态程序提供的主要功能接口,用户程序可以通过这组接口操作内核。系统调用主要功能进程控制进程间通信文件系统控制系统控制内存管理网络管理s原创 2021-08-07 13:45:59 · 247 阅读 · 0 评论 -
Linux系统编程:文件I/O
Linux文件编程文件描述符Linux 系统调用1.open(打开或创建一个文件)2.write(写入文件)3.read(读文件)4.lseek(移动读、写指针位置)5.close(关闭文件)小技巧:利用lseek计算文件大小函数使用示例小应用:实现Linux下cp命令文件描述符文件描述符(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。文件描述符 0 与 进程的标准输入(sta原创 2021-06-25 00:46:04 · 235 阅读 · 0 评论 -
Linux系统编程: 进程管理
进程管理概述概述程序是存放在存储介质上的一个可执行文件进程是程序执行的过程。进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,进程是动态的。原创 2021-08-08 00:16:21 · 336 阅读 · 0 评论 -
Linux系统编程:进程间通信(IPC)——管道 有名管道 信号 消息队列 共享内存 信号量
进程间通信概述信号信号的概念信号的编号不可靠信号简介:信号产生方式信号的处理信号的发送和接收处理方式1:kill发送信号,signal注册一个函数处理信号方式2:sigqueue发送信号和数据,sigaction接收无名管道(pipe)无名管道的特点:pipe函数:父进程——|pipe|——>子进程示例代码概述进程是一个独立的资源分配单元,不同进程之间相互独立。不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信(IPC:Inter Processes Communication原创 2021-08-09 23:08:21 · 253 阅读 · 0 评论 -
进程间通信(IPC):软中断信号(signal)
信号信号简介信号的编号不可靠信号简介:信号产生方式信号的处理信号的发送和接收处理方式1:kill发送信号,signal注册一个函数处理信号方式2:sigqueue发送信号和数据,sigaction接收信号简介信号是 Linux 进程间通信的最古老的方式,是软中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件信号的编号每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“原创 2021-08-12 19:23:37 · 1428 阅读 · 0 评论 -
进程间通信(IPC):无名管道(pipe)和有名管道(named pipe)
无名管道和有名管道无名管道(pipe)<3 <3 <3无名管道的特点:pipe函数父进程——|pipe|——>子进程示例有名管道(FIFO)<3 <3 <3mkfifo示例代码无名管道(pipe)❤️ ❤️ ❤️管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制。父进程调用pipe函数的时候,内核在执行pipe函数的时候就会在内核空间创建一个缓存,这个缓存就是无名管道无名管道的特点:原创 2021-08-12 19:56:02 · 732 阅读 · 0 评论 -
进程间通信(IPC):消息队列(message)
消息队列IPC对象消息队列创建或打开一个消息队列消息队列的读写示例代码⭕️IPC对象IPC 对象包含: 共享内存、消息队列和信号量每个IPC对象有唯一的ID(IPC对象创建的时候由系统分配的一个数字,只有创建IPC对象的进程可以获得ID,别的进程不知道这个ID号)IPC对象创建后一直存在,直到被显式地删除每个IPC对象有一个关联的KEY(可以看成IPC对象的一个属性,通过KEY值,可以使不同的进程能够打开同一个IPC对象。创建IPC对象的进程把KEY值和IPC对象关联)查原创 2021-08-12 20:05:24 · 988 阅读 · 0 评论 -
进程间通信(IPC):共享内存(shared memory)和信号量(semaphore)
共享内存和信号量共享内存使用共享内存通信的一般步骤创建共享内存共享内存的映射和解除映射共享内存操作函数示例代码信号量多任务编程中互斥和同步的概念信号量(Semaphore)信号量的操作相关函数函数使用示例信号量配合共享内存使用共享内存????????????????????共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。共享内存在进程空间的映射:使用共享内存通信的一般步骤1、创建或者打开共享内存2、原创 2021-08-12 20:18:23 · 4986 阅读 · 0 评论 -
Linux网络IPC: Socket套接字的介绍和使用
Socket套接字不同主机间的相互通信:<3套接字socket:<3网络字节序与主机字节序:<3Socket编程:<3Socket编程的一般步骤服务端:客户端:socket接口函数头文件Socket函数bind函数listen和connect函数accept函数代码示例:<3不同主机间的相互通信:❤️进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施:UNI原创 2021-08-12 18:39:39 · 542 阅读 · 0 评论 -
Linux系统编程:多线程及互斥量的使用
多线程线程概述pthread库线程概述进程是CPU分配资源的最小单位,线程是CPU调度的最小单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成进程在进行创建、切换、撤销操作时,需要较大的系统开销。为了减少系统开销,从进程中演化出了线程。为了让进程完成一定的工作,进程必须至少包含一个线程(主线程0)。线程存在于进程中,共享进程的资源(线程存放在栈区)线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所原创 2021-08-11 17:15:23 · 223 阅读 · 0 评论 -
C语言FTP云盘项目
myftp功能代码头文件:用到的函数:服务端代码:客户端代码:测试客户端:服务端:功能客户端与服务端通过socket建立连接后,客户端发送命令,服务端完成相应服务命令:命令说明ls查看服务端文件pwd查看服务端路径cd服务端切换目录myls查看本地文件mypwd查看本地路径mycd本地切换目录get从服务端下载文件到本地put上传文件到服务端quit客户端退出代码头文件:myftp.h#ifn原创 2021-10-01 18:21:11 · 399 阅读 · 2 评论 -
Linux时间相关C库函数
由UNIX内核提供的基本时间服务是国际标准时间公元1970年1月1日00:00:00以来经过的秒数。这种秒数是以数据类型 time_t表示的。我们称它们为日历时间,由函数time()内的系统调用获取。tm结构time_t和tm结构可通过下面的函数转换将time_t或tm表示成字符串,形如 “Wed Jun 30 21:49:08 1993\n”strftime函数根据 format 中定义的格式化规则,格式化结构 tm 表示的时间,并把它存储在s中。如果产生的字符串小于 size 个原创 2022-06-26 23:29:56 · 196 阅读 · 0 评论 -
Linux文件系统相关C函数
stat()函数获取文件信息stat结构体:st_mode如下表,其中15-12 位保存文件类型,11-9 位保存执行文件时设置的信息, 8-0 位保存文件访问权限粘住位(t位)sticky bit:现在的作用为若目录具有该位,则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名。POSIX中定义了检查这些文件类型的宏定义:utime()函数可用于修改文件最后读写的时间文件权限管理chmod更改文件权限 直接使用shell命令 chmod原创 2022-06-26 19:49:58 · 516 阅读 · 0 评论