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

1、分层模型、协议、网路基础(linux网络编程)【代码】【图】

协议: 协议是双方共同指定的一组规则, 在网络通信中表示通信双方 传递数据和解释数据的一组规则. OSI 7层模型: 物数网传会表应 应用层: 主要就是应用程序, ftp ssh email http 表示层: 进行编解码和翻译工作 会话层: 建立会话和保持会话 传输层: 定义了端端端的传输, TCP UDP协议 网络层: 定义了点到点的传输, IP协议----路由器 数据链路层: 数据校验, 定义了数据格式--帧, ARP协议 RARP协议 物理层: 通信介质-双绞线, 光纤 调制...

【Linux】Linux网络编程

socket 默认开启的socket是阻塞的,想要设置非阻塞的话,可以用 fcntl设置为 nonblock;或者使用setsockopt进行更多设置; 一般使用推荐 设成nonblock,然后epoll,或者select,poll 注意 TCP链接,如果远端没有关闭,直接断网的话,这种情况下你是不知情的,只能加超时重连或者保活之类的机制,对方关闭的话是可以收到对方关闭事件的;

Linux系统编程—线程—线程同步之互斥量加锁解锁【代码】【图】

互斥量从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以...

Linux系统编程【4】——文件系统【代码】【图】

Linux的文件系统比较庞大,笔者从实现pwd命令入手,来加深对文件系统的理解,起到以小见大的效果pwd命令的作用Linux的文件系统比较庞大,所以笔者从pwd这一命令入手,在实现的过程中加深对文件系统的了解。输入:man pwd从指导文档中可以看到,pwd命令的作用是显示出当前所处位置,以路径的形式打印出来。举例如下:笔者首先输入pwd命令,显示出/home/lularible,说明我当前就处在该位置。当笔者进入其中的一个子目录"bin"时,再次...

Linux系统编程【3.1】——编写ls命令【代码】

在笔者之前的Linux系统编程系列博客中【1】和【2】实现的more和who命令,是对于文件内容的读取与处理。而本次所要实现的是ls命令,ls命令的作用是显示目录中的内容,研究的对象是目录,这又会有哪些新知识点呢,让我们一起来看看吧ls命令简介 老规矩,直接在终端输入:man ls (有关于man命令的简介可以参考笔者前期博客:Linux系统编程【1】——编写more命令)可以看到,ls命令的作用是显示目录中的文件名,它带有可选的参数,如-a...

Linux系统编程—线程—线程共享内存空间的代码验证【代码】【图】

线程共享内存空间的代码验证 线程默认共享数据段、代码段等地址空间,常用的是全局变量。 #include <stdio.h> #include <pthread.h> #include <unistd.h>int g_data=0;void *func1(void *arg) {printf("t1:%ld thread is create\n",(unsigned long)pthread_self());printf("t1:param is %d\n",*((int *)arg));while(1){printf("t1:%d\n",g_data++);sleep(1);} }void *func2(void *arg) {printf("t2:%ld thread is create\n",(unsi...

Linux系统编程12:进程的优先级及PR和NI&&如何修改进程优先级【图】

文章目录 (1)什么是进程的优先级(2)进程优先级如何表示(3)PRI和NIA:什么是PRI和NIB:如何修改进程优先级 (4)其他概念(1)什么是进程的优先级 这里首先要区分优先级和权限的关系:以食堂举例,你能去学生食堂而不能去职工食堂,这是因为你没有权限,你可以去食堂,但是你却排不上队,这是因为你的优先级不够(你跑的够不够快,排的是不是在前面) 换到进程中,当进程太多时,进程就需要被合理的管理,总不能谁都抢着去占用...

【LinuxC++编程实战】从零开发C++服务器框架

一个C++实现的服务器脚手架,代码整洁 https://gitee.com/hsby/Xscaffold 赶紧fork! 工程由2021年1月开始,中间准备实习面试搁置了,4月加急持续更新中

Linux之Shell编程【代码】

文章目录 Linux之Shell编程一 shell的变量二 运算符三 条件判断四 函数Linux之Shell编程 一 shell的变量变量的介绍 (1)系统变量:如 $HOME,$SHELL,$USER (2)自定义变量:用户自定义的变量 (3)显示当前shell中所有变量:set shell变量的定义 (1)定义变量:变量=值 (2)撤销变量:unset 变量 (3)声明静态变量:readonly 变量 (4)定义变量的规则① 变量名称可以有字母、数字和下划线组成,但是不能以数字开头 ② 等号两...

linux网络编程之本地套接字通信【代码】

本地套接字 伪文件即可采用TCP通信又可采用UDP通信 采用TCP通信流程如下 服务器端创建套接字 int lfd=socket(AF_UNIX,SOCK_STREAM,0) 绑定一个套接字文件 struct sockaddr_un serv; serv.sun_family=AF_UNIX; strcpy(serv.sun_path,“server.socket”);------现在还不存在 bind(lfd,(struct sockaddr*)&serv,len);------绑定成功套接字文件被创建 设置监听 listen() 等待连接请求 struct sockaddr_un client; int len=sizeof(cl...

编程小技巧之 Linux 文本处理命令

点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大!合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也。合理的利用 Linux 的命令行工具,可以提高我们的工作效率。本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路。希望大家阅读完这篇文章之后,要多加实践,将这些技巧内化到自己的日常工作习惯中,真正的提高效率。内化很重要,就像开玩笑所说的一样,即使我知道高内聚,低耦...

编程小技巧之 Linux 文本处理命令(二)【代码】【图】

合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也。合理的利用 Linux 的命令行工具,可以提高我们的工作效率。本篇文章是《Linux 文本处理命令》 续篇,在前文的基础上再介绍几款有用的 Linux 命令行工具和使用场景。再啰嗦几句,工具能提供效率,但是有一定的学习曲线和学习成本。很多同学临时想用时,可能会陷入了不会用的尴尬境地,再去网上搜索学习,最终要花费更长时间,还不如使用笨方法处理,这是很多同学不使用...

03Linux网络编程基础 ---- IO复用【代码】【图】

select系统调用#include <sys/select.h>int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);nfds:是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1 readfds:对应可读的文件符集合,是我们关心的,是否可以从这些文件中读取数据的集合,若有大于等于一个可读文件,则select会返回大于0的值。若无,则根据timeout判断。 writefds: 对应可写的文件符集合。 exceptfds...

Linux编程学习--进程间通讯(二)System V IPC

一、引言 二、System V IPC ------> 1、IPC种类 ------> 2、进程同步机制遵循的原则 ------> 3、IPC key(键值) ------> 4、IPC key的创建方法 ------------> 4.1、 fork ------------> 4.2、IPC_PRIVATE ------------> 4.3、用户自定义 三、各类IPC详解 ------> 1、信号 ------> 2、信号量 ------> 3、消息队列 ------> 4、共享内存 一、引言 前一章介绍了进程间通讯的早期机制,这次就介绍一下System V IPC 二、System V IPC 1、I...

Linux Socket编程(不限Linux)【代码】

1、网络中进程之间如何通信?本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:消息传递(管道、FIFO、消息队列)同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)共享内存(匿名的和具名的)远程过程调用(Solaris门和Sun RPC)但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网...