【Linux系统编程【2】——编写who命令】教程文章相关的互联网学习教程文章

Linux系统编程入门【代码】

作者:不洗碗工作室 - Marklux 出处:marklux.cn/blog/56 版权归作者所有,转载请注明出处文件和文件系统文件是linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的。文件描述符在linux内核中,文件是用一个整数来表示的,称为 文件描述符,通俗的来说,你可以理解它是文件的id(唯一标识符)普通文件普通文件就是字节流组织的数据。文件并不是通过和...

[Linux系统编程]守护进程/线程(四)【代码】【图】

距离上一次利用高并发技术实现360度行车记录仪功能已经过去半年了。开始写一系列关于系统编程和网络编程内容进行总结。 温故而知新,欢迎大家讨论学习。文章目录 1 守护进程1.1 什么是守护进程1.2 守护进程创建步骤1.3 守护进程代码实现(重点) 2 线程2.1 什么是线程2.2 线程共享资源2.3 线程间非共享资源2.4 线程的优缺点2.5 线程控制原语2.5.1 pthread_self 函数2.5.2 pthread_create 函数2.5.2.1 创建一个新线程,打印线...

linux网络编程一:epoll【代码】

简介一提到linux高性能服务器编程,epoll就是绕不开的话题,当前网络库在linux上实现也主要是以epoll为主。epoll的主要优点有:当检查大量的文件描述符时,epoll的性能比select和poll要高很多。epoll 既支持水平触发也支持边沿触发。select 和 poll只支持水平触发,而信号驱动I/O只支持边缘触发。避免复杂的信号处理流程灵活性高,可以指定希望检查的事件类型APIepoll由以下api构成:epoll_Create1, epollctl以及epoll_wait。epoll...

Linux系统编程18_共享内存

在Linux中,每个进程都有属于自己的进程控制块(PCB)和地址空间(Addr Space),并且都有一个与之对应的页表, 负责将进程的虚拟地址与物理地址进行映射,通过内存管理单元(MMU)进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一区域,它们所指向的这块区域即共享内存。 在物理地址中有一块共同的内存区,即共享内存,这块内存可以被两个进程同时看到。这样当一个进程进行写操作,另一个进程读操作就可以实现进程间通信...

Linux编程 17 文件权限(权限设置chmod,改变文件属主属组关系chown,chgrp)【图】

一. 概述  如果创建了一个目录或文件,有时会需要改变它的安全性设置,在linux系统上有一些工具可以完成这任务,包括使用chmod命令改变已有默认权限,分别能对属主,属组,其它用户的权限的控制分别以读取、写入、执行3种权限来区分设置,还有使用chown,chgrp来改变默认属主属组关系。  1 . 改变权限 chmod    chmod命令用来改变文件和目录安全性设置,该命令的三种用法格式如下:          model模式参数可以使...

Linux编程 18 安装软件程序(yum工具对软件包安装,删除,更新介绍)【代码】【图】

一. 概述  本篇介绍在linux上见到的各种包管理系统(package management system,PMS)用来进行软件安装,管理,删除的命令行工具。PMS是利用一个数据库来记录各种相关内容,包括: linux系统上已安装了什么软件包,每个包安装了什么文件,每个已安装软件包的版本。  软件包通常会依赖其他的包,为了前者能够正常运行,补依赖的包必须提前安装在系统中。PMS工具将会检测这些依赖关系关系,并在安装需要的包之前,先安装好所有额外...

Linux编程(进程的五种通信)【代码】

引言:IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 一、管道 概念:管道分为无名管道和命名管道。管道是一种半双工的通信方式(半双工即信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在),数据只能单向流动。管道的问题在于他们没有名字,只能在具有亲缘关系(父子进程间)的进程间使用。 管道特点: ①半双工的...

Linux系统编程14_信号和进程状态

====================信号介绍=========================SIGKILL 9 exit信号,是不会被阻塞的,不能被忽略;杀死进程的终极办法SIGSTOP 停止,并不消灭进程 SIGINT 2  Ctrl + C时OS送给前台进程组中每个进程, 默认处理的时候会调用exit终止程序SIGQUIT 3 默认处理动作是终止进程并且Core DumpSIGABRT 6 调用abort函数,进程异常终止 SIGUSR1 10 用户自定义信号SIGSEGV 11 无效存储访问时...

Linux下的进程概论与编程二(进程控制)【代码】【图】

一、进程标识符 1、每个进程都有非负的整形表示唯一的进程ID。 几个典型进程的ID及其功能:2、除了进程ID,每个进程还有一些其他的标识符。 下列函数返回这些标识符: #include <sys/types.h> #include <unistd.h> pid_t getpid(void); //返回值:调用进程的进程ID pid_t getppid(void); //返回值:调用进程的父进程ID uid_t getuid(void); //返回值:调用进程的实际用户ID uid_t geteuid(void); //返回值:调用进程的有效用户ID gi...

linux shell编程(1)—— 初见【代码】【图】

目录 一、初见shell(1)什么是shell编程(2)为什么要学shell编程 二、一睹为快:我的第一个shell脚本三、变量(1)定义和使用(2)用语句给变量赋值(3)好习惯之变量使用时加上 { }(4)变量是可以被重新定义的(5)只读变量与删除变量(6)变量的三种类型局部变量环境变量shell变量四、shell字符串(1)单引号(2)双引号(3)拼接字符串使用双引号拼接使用单引号拼接 (4)获取字符串长度(5)提取子字符串(5)查找字符(目前...

linux多进/线程编程(2)—— fork、wait、waitpid等用法【代码】【图】

参考: 1.博客1:https://www.pianshen.com/article/4305691855/ fork:在原进程的基础上“分叉”出一个子进程,即创建一个子进程。NAMEfork - create a child processSYNOPSIS#include <unistd.h>pid_t fork(void);DESCRIPTIONfork() creates a new process by duplicating the calling process. The new process is referred to as the child process. The calling process is referred to as the parent process.返回值:RE...

【Linux编程】Makefile 的工作流程!【代码】【图】

本篇文章我们研究一下 Makefile 的是怎样工作的?当我们在执行 make 条命令的时候,make 就会去当前文件下找要执行的编译规则,也就是 Makefile 文件。 我们编写 Makefile 的时可以使用的文件的名称 "GNUmakefile" 、"makefile" 、"Makefile" ,make 执行时回去寻找 Makefile 文件,找文件的顺序也是这样的。 我们推荐使用 Makefile(一般在工程中都这么写,大写的会比较的规范)。如果文件不存在,make 就会给我们报错,提示:mak...

Linux文件IO编程学习笔记【图】

Linux文件IO编程学习笔记 文件的基本操作文件的打开open主参数副参数 文件的关闭closeTIPS 文件的创建文件的读写权限创建文件:open修改读写权限系统调用问题 文件的读写函数基本函数ssize_t read (int fd, void *buf, size_t count);ssize_t write (int fd, const void *buf, size_t count); read函数解析write函数调用 文件读写位置与定位改变文件位置指针改变文件偏移量文件空洞TIPS 获取文件的属性信息文件数据的存储 元数据 文...

【Linux编程】Makefile文件中包含哪些规则?【代码】【图】

想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:targets : prerequisites command或者是targets : prerequisites; command command相关说明如下: ? S9targets:规则的目标,可以是 Object File(一般称它为中间文件),也可以是可执行文件,还可以是一个标签; ...

Linux 系统编程——标准I/O【代码】【图】

目录 1. 缓冲2. 打开流3. 关闭流4. 刷新流5. 定位流6. 格式化I/O7. 二进制I/O 1. 缓冲 标准I/O提供缓冲的目的是为了尽量减少 read/write 的调用次数。缓冲类型: 全缓冲:填满缓冲区之后才进行实际的I/O 操作;对磁盘文件通常使用全缓冲。行缓冲:在输入输出中遇到换行符时就进行实际的I/O操作;对终端通常使用行缓冲。无缓冲:就是没有缓冲区;标准错误通常使用无缓冲。 设置缓冲: #include <stdio.h>void setbuf(FILE *stream, ...