
Linux
WolfOnTheWay
我们的目标就是做大,做强,定创辉煌!
展开
-
centos7 离线安装gcc g++(已帮你备好所有rpm文件)
rpm文件下载链接:链接:https://pan.baidu.com/s/1ehb7GiQdGwDHcMNRgBbaRw提取码:pys4下载完成后,将所有rpm文件放入机器中的任意目录下,进入目录,执行:rpm -Uvh *.rpm --nodeps --force原创 2021-12-19 17:02:11 · 2044 阅读 · 0 评论 -
父子进程共享文件描述符(代码实现)
相信都知道,在fork()子进程之后,子进程会将父进程的进程地址空间给自己拷贝一份,因此父子进程中有很多数据是一样的,例如,文件描述符,信号量等。今天我就编码实现下,让父子进程通过同一个文件描述符去读取数据。首先准备一个word.txx,内容如下:abc123345编写如下代码:#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<sys/wait.h>原创 2020-09-18 18:31:12 · 772 阅读 · 0 评论 -
Linux内核源码剖析:poll和epoll
对poll和epoll的源码进行了剖析,希望对大家有所帮助。原创 2020-08-09 14:31:48 · 857 阅读 · 0 评论 -
浅谈Linux-I/O复用【select、poll、epoll】+详细使用示例
本位介绍了I/O复用,对select、poll和epoll做出一定的分析,同时又有个人理解,并给出了详细的代码示例,欢迎大家参阅。原创 2020-05-01 15:49:37 · 733 阅读 · 0 评论 -
浅谈TCP拥塞控制:慢启动和拥塞避免、快速重传和快速恢复
文章对TCP的拥塞控制算法,进行了浅显的描述,便于人们理解。原创 2020-04-29 14:25:28 · 15208 阅读 · 5 评论 -
臭名昭著的三次握手和四次挥手
三次握手和四次挥手几乎是面试必问的问题,为了能更好的记忆,我尽量以最简洁的语言陈述。三次握手为什么是三次?四次挥手为什么是四次?...原创 2020-04-28 17:11:26 · 3453 阅读 · 11 评论 -
TCP服务端和客户端编程流程+代码详细解析(linux:c语言)
TCP服务端和客户端的编程流程是网络编程的重点。以下内容包括编程步骤、代码实现、以及代码解析四个方面。目录1 编程步骤2 代码实现3 代码解析1 编程步骤tcp服务器与客户端的编程流程如下所示:左边为服务端,右边为客户端。我们常见的服务器客户端大多都是遵循这个步骤的。2 代码实现我们按照上述步骤来实现一个简易的服务端与客户端:ser.c...原创 2020-04-28 10:28:16 · 9525 阅读 · 0 评论 -
一文读懂TCP协议UDP协议的特点(区别)
最近复习到网络,Linux的复习也将接近尾声。在这我将改正自己做事龙头蛇尾的一贯作风。在网络编程这个模块中也会认真做好笔记。网络模块是一个面试必问的模块,这一块内容较多,但大多都是知识点,代码量就一个TCP和UDP的编程流程。从这篇文章开始,我会将网络编程的知识点一一进行总结。一下内容参考《计算机网络》(谢希仁)第五版。目录1.TCP协议的特点2.UDP协议的特点1.T...原创 2020-04-27 17:17:05 · 1443 阅读 · 0 评论 -
OSI七层模型和TCP/IP五层模型概念总览
1 OSI七层模型1.1 OSI的来源OSI(Open System Interconnect),即开放式系统互联网。一般叫OSI模型,是ISO(国际标准化组织)在1985年研究的网络捂脸模型。ISO为了更好的使网络应用层更为普及,推出了OSI模型,其含义就是推荐所有的公司使用这个规范来控制网络。这样所有的公司都有相同的规范,实现互联。1.2 OSI七层模型的划分OSI定义了网...转载 2020-04-26 17:05:47 · 1225 阅读 · 0 评论 -
无锁编程与有锁编程的效率总结、无锁队列的实现(c语言)
1.无锁编程与有锁编程的效率无锁编程,即通过CAS原子操作去控制线程的同步。如果你还不知道什么使CAS原子操作,建议先去查看相关资料,这一方面的资料网络上有很多。CAS实现的是硬件级的互斥,在线程低并发的情况下,其性能比普通互斥锁高效,但是当线程高并发的时候,硬件级互斥引入的代价与应用层的锁竞争产生的代价同样都是很大的。这时普通锁编程其实是优于无锁编程的。硬件级原子操作使应用层的操作变...原创 2020-04-25 15:19:11 · 2616 阅读 · 0 评论 -
惊!线程同步居然讲的这么详细:信号量、互斥锁、条件变量、读写锁
1.为什么要进行线程的同步操作?我们以一个程序引出这个问题:如下:#include <stdio.h>#include<unistd.h>#include<stdlib.h>#include<pthread.h>#include<pthread.h>int val=0;void* thread_fun(void *...原创 2020-04-24 11:44:46 · 5105 阅读 · 0 评论 -
来!一文读懂什么是线程、协程和纤程!
本文主要介绍了线程、协程和纤程的概念原创 2020-04-22 10:32:23 · 2900 阅读 · 2 评论 -
linux进程通信看这一篇就够了【管道、信号量、共享内存、消息队列】(超级详细、不骗人)
此文章详细介绍了linux进程通信的管道、信号量、共享内存、消息队列以及它们的使用方法。原创 2020-04-21 15:01:21 · 1654 阅读 · 0 评论 -
Linux关于进程的四道面试题||面试经常被问到||fork||printf、write的打印问题
在这里总结关于进程的四道面试题:第一道问下面程序打印几个A。#include<stdio.h>#include<stdlib.h>#include<unistd.h>int main(){ int i = 0; for(;i<2;++i) { fork(); printf("A\...原创 2020-04-18 14:36:33 · 515 阅读 · 0 评论 -
Linux僵死(尸)进程(详解)||概念||产生条件||解决方法(wait(waitpid)、信号、两次fork)
本文详细介绍了进程结束的处理机制、僵尸进程以及僵尸进程的四(三)种处理方法,同时涉及到孤儿进程的概念和处理机制。原创 2020-04-18 11:19:11 · 3192 阅读 · 0 评论 -
frok创建子进程的流程(底层实现)||fork源码剖析||(详解)||写实拷贝
前几天看了一道面试题?问道fork的复制流程是怎么的?描述写时拷贝?我想如果我简单的说是子进程复制了父进程的所有资源是不是太low了,因此搜集了一些资料,从底层详细进行分析。目录1.fork的处理流程2.fork调用流程图do_fork的实现copy_process的实现流程3.写时拷贝技术1.fork的处理流程从c语言中的fork函数开始,它在gblic库中会...转载 2020-04-17 17:15:47 · 1426 阅读 · 0 评论 -
Linux内存的分页管理详解||物理内存||虚拟内存||联系||分页机制||工作原理
目录1.内存2.虚拟内存3.内存的分页管理1.虚拟内存地址到物理内存地址的寻址2.磁盘地址(虚拟内存空间)到物理内存地址的映射3.虚拟内存是如何工作的1.内存内存使计算机的主存储器,它为进程开辟出进程空间,让进程在其中保存数据。它的最小的存储单位一般是字节。内存会为每各字节进行编号,从0开始依次递增(线性的)。通常我们会用16进制来表示内存的地址。同时,内存地...原创 2020-04-16 17:33:32 · 1514 阅读 · 0 评论 -
Linux静态库||共享库的制作与使用详解(c/c++)
1.静态库的制作与使用首先静态库的制作需要用到ar命令,ar命令不了解,可以看下下面文章,对ar命令有详细的介绍:linux ar 命令详解我们来看以下静态库制作的流程:首先将.c文件生成为.o文件。用ar命令生成静态库在主函数包含函数头文件运行的时候引用静态库即可一个实例:首先,创建一个头文件lib.h,内容如下:int add(int a,int b)...原创 2020-04-15 12:09:14 · 434 阅读 · 1 评论 -
Linux命令系列:uname、lsof、nc、strace、ulimit
目录1.uname2.lsof3.nc4.strace5.ulimait1.unameuname命令可以显示电脑或者操作系统的相关信息。参数及含义如下所示:a或--all:显示全部的信息;-m或--machine:显示电脑类型;-n或-nodename:显示在网络上的主机名称; -r或--release:显示操作系统的发行编号;-s或--s...原创 2020-04-14 16:59:52 · 493 阅读 · 0 评论 -
Linux-gdb调试||多线程调试||多进程调试||详解
1.gdb调试的基本命令gdb是linux下调试程序的基本工具,调试的前提是在程序中加入调试信息,在编译时通过加上-g参数来完成。例如我们有main.c源文件:通过命令:gcc -o main main.c -g这样就在main中加入了调试信息,方可调试。调试的一般流程:加入调试信息 gdb启动: 例如gdb main 加入断点 运行程序 调试 /退出下面说...原创 2020-04-14 10:48:38 · 886 阅读 · 0 评论 -
gcc和g++的区别?c和c++的区别?
1.gcc和g++的区别?很明显,gcc是用来编译c程序的,而g++是用来编译c++程序的。但是g++可以同时编译c、c++程序,这是因为g++在编译c程序的时候会调用gcc。而gcc不可以编译c++程序,分部测试,发现gcc在编译c++程序的时候在编译和链接这两步报错,而前面预编译、汇编都可以顺利通过。这是因为c和c++程序在预编译和汇编阶段都做了相同的事情。而在编译阶段:gcc...原创 2020-04-13 10:18:50 · 1125 阅读 · 0 评论 -
Linux预编译、编译、汇编、链接指令||为什么汇编生成的二进制文件需要链接后才能执行?
我们以.c文件为例,假如我们有文件为main.c它的各个指令为:预编译:gcc -E mian.c -o main.i 编译:gcc -Smain.i -o main.s 汇编:gcc -c main.s -o main.o 链接:gcc -o main main.o链接生成的main就是可执行程序。想要了解这四部的具体过程可以参考我的另一篇博文:https://blog...原创 2020-04-13 09:31:44 · 1210 阅读 · 1 评论 -
Linux命令系列:netstat、tcpdump、ipcs、ipcrm、top、vmstat、uptime、iostat、free
有些命令我不会进行整理,只是给出一些连接,因为这些人写的很全面,直接参阅即可。1.netstatnetstat命令可以显示所有的网络连接情况(运行端口、路由表、套接字连接等)使用方式为:netstat [选项]具体选项如下(可以通过netstat -h查看):-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅...原创 2020-04-12 17:02:03 · 830 阅读 · 0 评论