Linux
文章平均质量分 70
necesse
这个作者很懒,什么都没留下…
展开
-
socket编程 REUSEADDR/REUSESOCK 参数区别
介绍一下系统调用 setsockopt 的REUSEADDR/REUSESOCK 参数区别。众所周知,TCP连接中主动断开连接方会进入一个TIME_WAIT 状态,并连接会等待两个MSL时间才真正断开,来防止最后一个发送的ACK丢失也能重发和让数据包在网络中消散。原创 2022-08-22 03:21:04 · 767 阅读 · 0 评论 -
ubuntu 操作杂项
Ubuntu 18.04操作系统默认预装GCC 7.3版本,不过有时候在编译时是需要用不同gcc的版本,本文介绍怎样安装不同的gcc和g++,并设置根据不同的需要在不同版本之间转换。sudo update-alternatives --remove gcc /usr/bin/(为gcc版本号,比如gcc-4.5。这个命令输入过后,看不到java的版本了的话,就表示卸载成功了,如果,还能看到版本号,那一定是什么地方出了问题。同时输入同步时间命令。sudo update-grub,保存/更新GRUB文件。...原创 2022-08-11 14:46:35 · 862 阅读 · 0 评论 -
Linux下常见错误码
1 EPERMOperation not permitted操作不许可2 ENOENTNo such file or directory无此文件或目录3 ESRCHNo such process无此过程4 EINTRInterrupted system call系统调用被禁止5 EIOI/O errorI/O 错误6 ENXIONo such device or address无此器件或地址7 E2BIGArg list too longArg 列表太长8 ENOE原创 2022-05-02 22:48:41 · 3041 阅读 · 0 评论 -
make/Makefile 使用
Linux项目自动化构建工具 make/Makefile介绍一个工程中的源文件非常庞大,其按类型,功能、模块分别放在若干个目录中,makefile定义了一系列的规则来制定,那个文件需要先编译,那些文件需要重新编译。甚至于进行更加复杂的工作。makefile最大的好处就是能够“自动化编译”,一些写好makefile,只需要一个make指令。整个工程就能够自动编译,极大地提高了开发效率。make是一个命令工具,是一个解释makefile中的指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:原创 2021-11-14 10:16:04 · 883 阅读 · 0 评论 -
Linux多路转接 select、poll、epoll详解
Linux网络编程 多路转接五种IO模型,阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。目录Linux网络编程 多路转接前言五种IO模型阻塞IO非阻塞IO信号驱动IO多路转接IO异步IOfcntl 设置非阻塞SetNonBlockselect函数原型前言IO简单来说就是read 和 write,总体分为两步 1 等待数据就绪 2 从内核中的缓冲区拷贝数据到用户区,或从用户区拷贝数据到内核区。高效IO的本质其实就是减少等待数据就绪的时间。IO多路IO转接服务器也叫做多任务IO服务原创 2022-03-04 17:11:37 · 763 阅读 · 0 评论 -
Linux系统编程 ---- 多线程详解
多线程 线程(LWP: light weight process),在Linux环境下线程的本质仍是进程,底层并没有一个专门的结构体来描述一个线程。也叫轻量级的进程。每个进程至少有一个执行流,也就是一个线程。目录多线程概述线程的历史线程的用途线程的优缺点概述进程,硬盘上的程序运行以后,会在内存空间里形成一个PCB(进程控制块)。每个进程拥有自己的虚拟地址空间(mm_struct)。进程是承当操作系统资源分配的实体,线程是CPU的最小执行单元。线程存在于进程当中(进程可以认为是线程的容器),进程原创 2022-01-25 08:00:00 · 1590 阅读 · 0 评论 -
Linux系统编程 ---- 终端、进程组、会话
Linux 终端、进程组、会话 终端(Computer terminal),是与计算机系统相连的一种输入输出设备,通常离计算机较远。在UNIX系统中,用户通过终端登录系统后创建一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal)。进程中,控制终端是保存在PCB中的信息,而fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。目录Linux 终端、进程组、会话前言终端相关函数进程组会话创建会话的注意事项会话相关函数g原创 2022-01-08 14:55:39 · 1547 阅读 · 2 评论 -
Linux----用户和组
用户和组无论Windows还是Linux系统,对用户和组的管理都属于最基本的系统管理设置。尤其是用户的权限设置对于系统安全以及服务配置至关重要,作为系统管理人员必须要能够根据不同的需求,为不同的用户和组分配相应的权限。本章主要介绍如何对Linux中的用户和用户组进行管理,重点和难点是如何对用户和组进行权限设置。了解用户和组概念当我们要登录系统或是访问系统中的某个资源时,通常都要求输入用户名和密码,因而从系统管理的角度,用户其实就是一种进行认证或授权的标识。只有通过认证的用户才可以访问相应的资源,原创 2021-11-18 12:27:34 · 449 阅读 · 0 评论 -
Linux网络编程入门 ---- 实现客户端与服务端通信
功能实现实现客户端向服务端传输字符串,服务端打印服务端的ip和端口号并将字符串逆序回传给客户端。测试环境:Linux 服务器 (或者搭建本地虚拟机两台,处于同一网段)也可以通过环回接口模拟服务端和客户端通信。功能测试服务端代码#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <arpa/inet原创 2021-12-30 18:12:36 · 2467 阅读 · 1 评论 -
Linux系统编程 ----信号详解
Linux 信号Linux中,信号其实是软件中断,也是进程间通信的最古老的方式。它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。目录Linux 信号前言概述信号编号信号表信号要素信号的状态信号的产生阻塞信号集、未决信号集信号相关函数kill 函数raise 函数前言 “中断”就是像从一个事件处理转而处理其他事件,处理完毕后继续处理最开始的事件。“信号"就是属于这么一种“中断"。我们在终端上敲"原创 2022-01-07 23:20:26 · 1094 阅读 · 0 评论 -
Linux系统编程 ----静态库和动态库
静态库和动态库 写好的C程序从源文件到可执行程序要经过编译和链接两大步骤,而链接分为两种,静态链接和动态链接。目录静态库和动态库静态链接和动态链接静态链接动态链接静态链接和动态链接对比静态库和动态库制作静态库静态链接和动态链接静态链接静态链接:由链接器在链接时将库的内容加入到可执行程序中。- 优点:·对运行环境的依赖性较小,具有较好的兼容性- 缺点:生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间·库函数有了更新,必须重新编译应用程序动态链接连原创 2022-01-07 00:00:45 · 403 阅读 · 1 评论 -
Linux ---- 进程间通信
进程间通信 进程是操作系统的资源分配单元,不同进程(通常指的是用户进程)之间的资源是独立的,没有关联,无法直接在一个进程中直接访问另一个进程的资源。但是,进程不是独立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC)目录进程间通信进程间通信的目的实现进程间通信的方法无名管道pipe 函数无名管道的特点查看管道缓冲区大小有名管道创建有名管道函数创建有名管道读写有名管道进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程。通知事件:一个进程需要向另一原创 2022-01-05 19:27:34 · 1660 阅读 · 4 评论 -
Linux 系统调用详解
系统调用系统调用是操作系统提供给用户程序调用系统服务的一组“特殊”接口。目录系统调用前言系统调用系统调用的作用中断实现系统调用系统调用号和系统调用表系统调用号:系统调用表:执行系统调用glibc库syscall 调用glibc库glibc函数库对比Syscall调用前言系统调用系统调用可被看成是一个内核与用户空间程序交互的接口,它把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。系统调用的作用把用户从底层的硬件编程中解放出来与具体的硬件完原创 2021-12-25 19:21:09 · 1417 阅读 · 5 评论 -
Linux 服务详解
Linux 服务首先服务也是一种程序,但它是一种比较特殊的程序:服务是在系统后台运行、并等待用户或其它软件调用的一类特殊程序。我们通过执行命令所打开的进程大都属于是交互式进程,如果不采用nohup进行处理,那么这些进程基本上都是与终端相关,只要将进程所在的终端关闭,那么这些进程也就自动终止了。但是服务则不同,我们无论在哪个终端上运行了一个服务,这个服务所产生的进程都与终端无关,也就是说,将终端关闭之后,这些服务进程仍然会在系统后台自动运行。目录Linux 服务了解服务系统进程systemdsyste原创 2021-12-17 16:19:04 · 3360 阅读 · 0 评论 -
Linux----用户管理详解
用户和组管理Linux系统中对用户和组的管理主要是通过修改用户配置文件完成,各种用户管理命令执行的最终目的也是为了修改用户配置文件,所以在进行用户管理的时候,直接修改用户配置文件一样可以达到用户管理的目的。用户管理useradd 创建用户passwd 命令su 命令 切换用户...原创 2021-11-18 21:16:39 · 432 阅读 · 0 评论 -
Linux----用户组管理详解
用户组管理与组帐号相关的配置文件也有两个: etc/group、etc/gshadow。前者用于保存组帐号名称GID号、组成员等基本信息,后者用于保存组帐号的加密密码字符串等信息(但很少使用到)。usermod 命令修改用户账号属性groupadd 命令创建用户组gpasswd 命令添加删除组成员groupdel 命令删除用户组创建用户的相关系统配置文件/etc/login.defs 文件etc/skel 目录...原创 2021-11-18 21:27:37 · 2998 阅读 · 0 评论 -
Linux ---- 软件包管理
Linux中的软件安装方法早期要想在Linux系统中安装软件只能采取源码包的方式安装,这是一件非常困难、耗费耐心的事情。这是由于在 Linux系统中使用的绝大多数软件都是开源软件,软件作者在发布软件时直接提供的就是软件的源代码。用户在取得应用软件的源码文件后,需要自行编译代码并解决许多的软件依赖关系,因此源码安装需要用户具有很多相关知识、高超的技能、甚至很好的耐心才能安装好一个程序。在安装、升级、卸载时还要考虑到与其他程序、库的依赖关系,所以在校验、安装、卸载、查询、升级等管理软件操作时难度都非常大。原创 2021-12-13 10:57:36 · 910 阅读 · 0 评论 -
Linux ---- 环境变量、命令行参数
linux 环境变量环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。目录linux 环境变量前言环境变量理解PATH常见环境变量环境变量具有全局属性环境变量相关命令调用系统接口获取环境变量自定义环境变量命令行参数命令行参数的作用main函数第三个参数前言C/C++代码在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途原创 2021-12-12 21:45:17 · 1382 阅读 · 0 评论 -
Linux系统编程 ---- 进程/进程控制
Linux进程进程是程序的一个执行实例,正在执行的程序等。在内核的角度看 : 担当分配系统资源(CPU时间,内存)的实体。文章目录Linux进程一、PCB(进程控制块)task_struct 内容二、查看进程使用系统调用接口获取PID通过fork创建进程三、进程状态僵尸进程的危害孤儿进程无法被kill的进程进程优先级PRI & NI一、PCB(进程控制块)PCB (process control block)进程的信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集原创 2021-12-11 21:52:27 · 729 阅读 · 1 评论