自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WhiteShirtI的博客

看了就有大收获的博客

  • 博客(134)
  • 资源 (2)
  • 收藏
  • 关注

原创 网络 应用层 | HTTP的认识及实现(模拟实现一个简单的服务器)

应用层:是TCP/IP的顶层,通过使用传输层提供的服务,直接向用户提供服务,是TCP/IP网络与用户之间的界面或接口。应用层是直面程序员的一层,因为应用层是程序员自己写的,因此应用层的协议都是程序员自己定的应用层有两个重要的协议,一个是自定制协议,一个是知名协议HTTP协议。自定义协议:程序员自己根据自己的应用场景的特点,定义协议(数据的格式/数据的描述信息)...

2021-04-21 13:43:42 871 1

原创 网络 HTTP状态码大全

HTTP状态码当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码:200 - 请求成功301 - 资源(网页等)被永久转移到其它URL404 - 请求的资源(网页等)不存在500 - 内部服务器错误HTTP状态码分类分类分类描述1**信息

2021-04-20 22:05:44 355

原创 C++ 容器适配器(stack、queue、priority_queue)

容器适配器首先,我们要明白适配器是干什么的?其实就是一个接口转换装置,是得我们能用特定的方法去操作一些我们本来无法操作的东西。举一个例子,比如你的一个设备支持串口线,而你的电脑支持的是usb口,这时候,我们没有必要重新买一个支持usb的设备,只需要一根串口转usb口的小玩意,让你的设备能够连接到usb插口上,而它就是适配器。不同场景下,由于不同的序列式容器其底层采用的数据结构不同,因此容器适配器的执行效率也不尽相同。但通常情况下,使用默认的基础容器即可。当然,我们也可以手动修改,如果有了解双端队列

2021-04-19 16:44:12 186

原创 C++ 容器适配器priority_queue的使用及实现

优先级队列(Priority Queue)队列是一种特征为FIFO的数据结构,每次从队列中取出的是最早加入队列中的元素。但是,许多应用需要另一种队列,每次从队列中取出的应是具有最高优先权的元素,这种队列就是优先级队列(Priority Queue),也称为优先权队列。1. 优先级队列的概念优先级队列的定义优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。优先级队列的特点优先级队列是0个或多个元素的集合,每个元素都有一个优先权或值。当给每个元素分配一个数

2021-04-19 16:41:33 1122 4

原创 C++ 什么是伪函数,以及伪函数的使用

函数指针有缺点,最重要的是它无法持有自己的状态(局部状态),也无法达到组件技术中的可适配性(也就是无法再将来某些修饰徐条件加上,以达到改变其状态)。因此,STL算法的特殊版本所接受的所谓的”条件“或”策略“或”一整组操作“都是以仿函数呈现的。所谓仿函数(functor)就是使用起来像函数一样的东西。如果对某个class进行operator()重载,它就是一个仿函数类,该函数就是一个仿函数//仿函数类template<class T>struct Greater{ //仿函数 b

2021-04-19 16:25:23 2905

原创 C++ 双端队列deque

双端队列的简单认识双端队列是动态大小的序列式容器,其可以像两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有的元素存储在连续的空间中,在deque中通过指针加偏移量方式访问元素可能会导致非法的操作。vector与list提供了相似的接口

2021-04-19 14:54:51 497

原创 C++ 整形转换为字符串的方式总结

整形转换为字符串itoachar* itoa (int value, char * str, int base)value :要转换的值str:转换后的数据首地址base:以几进制的方式转换注:新版vs中需要加入类型安全检查#define _CRT_SECURE_NO_WARNINGS#define _CRT_NONSTDC_NO_DEPRECATE示例代码:int main(){ int a = 10; char arr[100]; //将a的内容以10进制的方式写到arr中

2021-04-18 19:39:12 3265

原创 C++ IO常用读写操作

输出文件流 ofstream头文件: 打开一个文件的方式:1、通过构造函数来打开文件;2、创建一个ofstream对象,调用open方法打开文件 //文件不存在则创建 //1、 ofstream fout("test.txt"); //2、 fout.open("test.txt"); //二进制打开文件 ofstream fout2("testBinary.txt", ifstream::binary); ifstream fin("testBinary.txt", ifstre

2021-04-18 19:10:50 277

原创 C++ 泛型模板进阶

非类型模板参数我们平时使用的模板都是和类型有关的,但是也有不是类型也能当做模板来使用,而是在tmplate<>中定义一个变量并给定初始值,这种模板的参数称为非类型模板参数例如在我们array静态数组中,底层的实现就使用到了非类型模板参数使用示例:void test(){ //定义10个int类型的静态数组 //这是在栈上申请的,第二个值不宜太大 //array<class T, size_t N> array<int, 10> arr;}使用注意

2021-04-18 18:10:01 292

原创 网络 TCP协议(C++代码|通过tcp协议实现客户端与服务端之间的通信)

TCP通信编程tcp是面向连接、可靠传输、面向字节流的传输层协议面向连接:必须建立了连接且保证双方都具有数据收发的能力,才能开始通信。(udp是无连接的,只要知道对端地址就可以直接发送消息)可靠传输:传送的数据,无差错、不丢失、不重复、并且按序到达面向字节流:通信方面也是分为客户端和服务端各端的操作流程:服务端操作流程:创建套接字端口:在内核中创建socket结构体,关联进程与网卡之间的联系为套接字绑定地址信息:网络通信中的数据都必须带有源端IP、源端端口、对端IP、对端端口、协议,这

2021-04-16 11:55:43 9854 11

原创 网络 UDP协议(C++|代码通过udp协议实现客户端与服务端之间的通信)

socket套接字编程就是在网络程序中编写代码,通过一套套的接字接口实现网络程序的编写。udp通信编程在网络通信中有客户端和服务端,它们之间是如何通信的呢?各端的操作流程:服务端操作流程:创建套接字端口:在内核中创建socket结构体为套接字绑定地址信息:网络通信中的数据都必须带有源端IP、源端端口、对端IP、对端端口、协议。在内核创建的socket结构体中描述IP地址端口以及协议,(必须主动绑定,告诉客户端自己的地址信息,如果不绑定客户端就不知道该发往哪个服务端了)为了告诉操作系统发往.

2021-04-12 22:12:41 10397 3

原创 leetcode_150. 逆波兰表达式求值

一、题目内容根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、* 、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"* “]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4”,“13”,“5”,”/","+

2021-04-11 15:30:08 109

原创 C++ list类的模拟实现

list类和string与vector不一样,list类的底层是通过双向带头循环链表属性定义由于是带头的链表,为了方便使用我们定义两个类,一个是单独结点的类,一个是属性只有头结点,用于存放结点的List类。//单独结点类template <class T>struct ListNode{ T _data; //结点数据 ListNode<T>* _next; //该结点的下一个结点 ListNode<T>* _prev; //该结点的上一个结点 //

2021-04-10 16:57:48 1229 5

原创 设计模式 C++单例模式

什么是设计模式(Design Pattern)设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结设计模式功能为了代码可重用性、让代码更容易被他人理解、保证代码可靠性单例模式单例模式作用:主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式的三要素:1、某个类只能有一个实例 2、它必须自行创建这个实例 3、必须自行向整个系统提供这个实例单例模式使用场景:比如在某个服务器程序中,该服务器

2021-04-08 18:01:08 523 2

原创 网络 计算机网络预备知识

网络的划分:局域网(几米到几千米);城域网(几千米到几十千米);广域网(几十千米以上)IP地址是一个无符号4个字节的整数uint32_t,在网络中作为主机的唯一标识网络中的每条数据中都会包含源端IP地址和对端IP地址----标识这个数据从哪个主机发出,要交给哪个主机来接收ip地址最大有32个,最多只能表示出4g的IP地址数量,也就是最多能使用43亿个IP地址,地球上的人和每个人都用肯定是不够的。也是目前使用最多的IPv4协议。为了满足该要求,扩展到IPv6协议,能用128位来表示IP地址,uint8_

2021-04-08 16:38:39 1480

原创 C语言 如何判断一个主机是大端还是小端

大端:低地址存高位小端:低地址存低位1、使用联合体最简单的方法,使用联合体。联合体的成员共用同一份空间,在联合体中定义两种不同大小的类型。例如一个int类型和char类型。定义一个int类型的变量i,初始化为1。再定义一个char类型的变量c。i和c共用同一块空间,而且此时的c占用的地址一直都是低地址,如果是小端,i的低位就存储在低地址,这是c的值也会变为1;如果是大端,i的低位就存储在高地址,此时的c的值还是0。通过最后c的值是否为1来判断是大端还是小端int main(){ union

2021-04-08 16:23:41 449

原创 Linux Linux下目录文件说明

/(根)目录每一个文件和目录从根开始,/下的目录有:[root@chg /]# lsbin data etc lib lost+found mnt opt root selinux sys usrboot dev home lib64 media daxin proc sbin srv tmp var/bin目录用来存放二进制可执行命令的目录,用户常用的命令都存在该目录下。例如:mkdir(创建目录)、cat(查看文件)、find(查找文件)等。[root@

2021-04-06 20:42:19 730 5

原创 Linux 线程池的概念与实现

线程池概念:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。应用场景:1、需要大量的线程来完成任务,且完成任务的时间比较短;2、对性能要求苛刻的应用;3、接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用不使用线程池的情况:若是一个数据请求的到来伴随一个线程去创建,就会产生一定的风险以及一些不必要的消耗。.

2021-04-05 17:57:14 4729 10

原创 Linux 线程如何实现同步与互斥

线程安全:为多个执行流对临界资源的争抢访问,但是并不会造成数据的二义性线程的安全主要是通过同步和互斥来实现的同步:通过条件判断保证对临界资源访问的合理性互斥:通过同一时间的唯一访问实现对临界资源访问的安全性如何实现同步与互斥互斥的实现互斥量互斥量本身只有0/1的计数器,描述了一个临界资源当前的访问状态,所有执行流在访问临界资源前都需要判断临界资源状态是否允许访问,如果是允许访问状态就可以让执行流访问临界资源,并修改临界资源的状态为不可访问状态,这期间如果有其他执行流想要访问,则会让执行流进.

2021-04-02 13:44:12 766 1

原创 Linux 生产者与消费者模型C++实现

生产者与消费者模型应用场景:有线程不断生成数据(生产者),有线程不断的比数据(消费者)生产与处理是放到不同执行流中完成的,中间会增加一个数据缓冲区,作为中间的数据缓冲场所,例如如果生成速度比处理数据速度快,那就可以将生成了的数据放到该缓冲区中,消费者只管从缓冲区取数据就行,这样子就可以提高它们的工作效率生产者与消费者模型的优势:1、降低生成者与消费者之间的耦合度2、支持忙闲不均,生成者生成速度快,不一样要等到有空闲的消费者,只要将数据放到缓冲区即可,等待消费者去处理3、支持并发,多个生产者线程

2021-04-01 16:28:02 510

原创 面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)

死锁死锁概念:死锁指多个线程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些线程都无法向前推进,就造成了死锁。死锁原因:线程请求和释放资源的顺序不当,导致死锁死锁产生的必要条件1、互斥条件:一个资源同一时间只能被一个线程访问,若其他线程请求该资源,则只能等待2、不可剥夺条件:线程获得资源在未使用完之前,不能被其他线程强行夺走,只能由获得该资源的线程来释放3、请求与保持条件:线程已经保持了至少一个资源,但是又提出了新的资源请求,如果新资源已被占有,这只能进行等待,但对自己以占有的资源保

2021-03-31 14:15:54 2084 10

原创 Linux 线程控制

前言:线程的有关代码实现其实都是库函数,也就是说操作系统并没有提供创建线程的接口,库函数封装了一套线程库,用于提供线程的各种操作创建线程接口int pthread_create(pthread_t *thread, const pthread_attr_t *arrt, void *(*start_routine)(void *), void *arg)参数内容(thread 输出型参数,用于获取线程id,也就是线程的操作句柄;attr 线程属性,用于创建线程的同时设置线程属性,通常置为NULL;st

2021-03-30 14:56:16 1121 4

原创 Linux 线程到底是什么(比喻+图解)

抽象概念:进程是资源分配的基本单位,线程是cpu调度的基本单位这样的概念过于抽象,不容易让人理解,下面我们进行一个比喻,将抽象的概念转化为我们生活中的例子进程=火车 线程=车厢我们假如要拉1000人从广州到北京,但是一个火车只有1个车厢,一个车厢只能装下200人。此时我们有两种方案可以选择,第一是增加火车的数量,5个火车同时拉200人;第二种方案是一个火车多拉几个车厢,也就是再增加4个车厢连接到火车末尾,这样子就一个火车就能拉1000人了。此时我们将这两种方案用进程和线程来理解,第一种是多创建几.

2021-03-29 13:44:27 417

原创 Linux 多线程和多进程的优缺点

多线程优点:线程间通信更加灵活方便:全局变量以及函数传参都是共用一个虚拟地址空间,只要知道地址就能访问同一块空间线程的创建和销毁成本更低:创建线程,也就是创建一个pcb,共用的数据只需要使用一个指针指向同一块就可以了,不需要系统分配资源同一个进程中的线程间的调度成本更低:共享同一份资源,不需要切换页表等多进程的优点:健壮性和稳定性更高:异常以及一些系统调用直接针对整个进程生效(一个进程中的全部线程全部生效),一个进程的崩溃,不会影响到另一个进程多线程的优点就是多进程的缺点,多进程的优点就

2021-03-29 13:44:13 690

原创 C++ 迭代器失效问题

迭代器的底层是通过指针来实现的,例如string类的迭代器是由char* 类型的指针实现的,vector类是由原生态指针T* 实现的。我们都知道,如果对指针使用不当,会造成程序的崩溃,所以对迭代器的操作,其实就是对指针的操作。所以我们使用时就要确保迭代器的安全性问题迭代器失效我们就拿vector类来详细说明1、操作已释放的空间造成迭代器失效我们来看看以下代码#include <iostream>#include <vector>using namespace std;.

2021-03-26 21:12:43 2266 6

原创 Linux 进程信号详细总结

信号:信号是进程之间事件异步通知的一种方式,是一个软中断作用:操作系统通过信号告诉进程发生了某个事件,打断进程当前的操作,去处理这个事件信号在我们生活中无处不在,例如交通上的红绿灯,学校上下课的铃声,而且肯定是一个信号对应一个事件,并且我们能够识别这个信号在操作系统中的信号也是如此,在linux下我们可以通过kill -l来查看信号的种类但是我们会发现,没有32和33号信号,所以信号总数共有62种1~31号信号是从unix借鉴而来的,每个信号都有具体对应的系统事件,但是它们是非可靠信号,也就是有

2021-03-24 09:48:15 1506 4

原创 C++ string类的模拟实现

在学习和使用string时,我们用起来都很方便,那是因为底层已经有人帮我们实现了,现在我们来自己实现string类的常用接口,加深对我们string类的认识默认成员函数的实现默认构造函数由于string类是字符串,是需要各种增删查改等操作,所以是一个需要开空间,占用资源的一个类,所以我们在实现默认构造函数时必须要申请空间。错误示范一 :没有申请空间string(const char* str){ strcpy(_str, str);}错误示范二:缺省值错误string(const ch

2021-03-21 20:48:20 492 10

原创 Linux linux下的进程状态

进程状态进程状态有:就绪 / 运行 / 阻塞linux下进程的状态运行态 R:就绪以及正在运行,运行状态的进程才会被操作系统调度在cpu上运行可中断休眠态 S:当前的阻塞能够被中断唤醒的休眠状态不可中断休眠态 D:当前的阻塞不会被中断唤醒,等待条件满足自动唤醒暂停态 T:停止运行,什么都不做僵尸态 Z:进程已经退出了但是资源没有完全被释放的一种状态 (这是一种等待后续处理的状态)可中断休眠状态展示Sloop.c代码#include<stdio.h>#include<u

2021-03-20 09:20:36 382 2

原创 Linux 如何创建进程函数与查看进程

进程创建函数进程就是pcb,意味着创建一个进程,就是创建一个pcbpid_t fork(void)–通过复制调用进程(父进程)创建一个新的进程(子进程)创建一个新的pcb,然后从父进程pcb中复制了很多数据过来复制的主要信息有内存指针,程序计数器,上下文数据。内存指针:子进程与父进程运行的代码其实是一样的–指向同一块物理内存中的数据及指令程序计数器/上下文数据:子进程被创建出来后,运行位置与父进程是完全一样的,下一步即将执行的指令都是从创建子进程成功之后才开始的。创建一个子进程出来是跟父进程做

2021-03-20 09:19:35 619

原创 Linux 动态库与静态库的概念及创建使用

动态库与静态库库的链接方式:gcc / g++编译器默认的链接方式是动态链接动态链接:链接动态库生成可执行程序,并没有把库中函数的实现指令直接拿过来写入可执行程序中,而是在可执行程序中记录了库中函数的符号信息表,在运行可执行程序的时候再去加载动态库到内存中,如果动态库不存在,则程序无法运行。静态链接:链接静态库生成可执行程序,直接将库中我们用到的函数的实现代码指令,写入到了可执行程序文件中,程序运行的时候没有什么依赖。动态链接的优缺点:生成的可执行文件比较小,运行时态库被加载到内存中,可以多个程序

2021-03-19 15:18:07 2442 9

原创 Linux 文件系统 & 软/硬链接文件

文件系统文件系统就是磁盘上管理文件的系统,一个硬盘有两个分区,一个是swap交换分区,是当内存不够用时将这个分区当做交换内存来使用;一个是filesystem文件系统分区,用来存储管理文件的;文件系统分区是由多个磁盘块来组成的,如果我们要将我们的文件保存到磁盘中,就必须是离散式存储,离散式存储就必须要有文件的描述信息,而这个描述信息描述了文件都使用了哪个磁盘块,以及文件的大小,属性等。这个描述信息是一个结构体struct inode。所以要存储一个文件,就必须找到空闲的磁盘块存储文件数据,以及需要找到一

2021-03-18 14:12:50 2378 7

原创 Linux 一个进程如何从用户态切换到内核态运行

首先我们先理解用户态和内核态的概念用户态:当一个进程调用库函数时就会进入用户态或者自己写的代码都是运行在用户态,使用的地址都是用的用户态中的地址内核态:当要完成系统核心功能时要运行的状态 一个进程如何从用户态切换到内核态运行使用系统调用接口,因为使用系统调用接口时会切换到内核态,目的是要完成系统的核心功能–例如write、read异常,当程序发生某种异常时,也会切换带内核态–例如10 / 0中断...

2021-03-18 12:34:06 1376

原创 Linux 实现一个带有重定向功能的shell

先实现一个不带重定向功能的shell(参考一下博客)Linux 原来实现一个shell这么容易!(史上最简单详细)主要改动还是在解析字符串之前和子进程进行重定向。代码标注的很详细易懂#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>int main(){ while (1) {

2021-03-16 18:31:56 296

原创 Linux 文件描述符的概念及与文件流指针的关系

文件描述符我们都知道,使用open打开一个文件后都会得到一个文件描述符,而且是一个非负正数,那这个数字是怎么来的呢?当我们打使用open打开文件时,系统会为我们指定的文件创建一个文件描述符(struct file),用来描述文件所在的地址及名称等信息,而在我们的进程中,还保存了一个文件信息表(struct files_struct),文件信息表中有一个结构体数组(struct file *fd arry[]),是用来保存文件描述符的地址,而文件描述符的地址所在的下标,就是文件描述符。当我们使用文件描述

2021-03-16 18:16:35 675

原创 C++ STL容器之string--常用接口

目录学前必须掌握知识string类对象的常见构造常见的访问字符串操作string中迭代器的使用string有关容量的常见接口常见修改string字符串的接口学前必须掌握知识string字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator>

2021-03-15 16:42:17 584

原创 C++ 泛型编程的基础--模板初识及应用

了解模板之前我们要先知道什么是泛型编程:型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库。泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含义,而模板也是泛型编程中的一种典型例子。函数模板模板我们生活中也听得不少了,建房时都会有图纸,然后人们可以通过图纸来建房的基本框架。有了基本

2021-03-15 12:52:01 367

原创 C++ 涨知识!new和delete知识总结(全面详细)

回顾C学C++的小伙伴之前一定有学过C吧,C语言申请空间都是在堆区上开辟的,而申请的方式有3种;malloc、calloc和realloc。malloc:函数原型void* malloc(size_t size) 参数size为要分配的字节数,返回值是void*,通常要强转为我们需要申请空间的类型,开辟成功回返回空间首地址,失败会返回NULL,但是申请成功后并不进行初始化,每个数据都是随机值。calloc:函数原型void* calloc(size_t number, size_t size); 参数

2021-03-14 22:19:41 37160 18

原创 Linux 常用的IO接口

fopen函数原型:FILE *fopen(char *filename, char *mode)参数内容(文件名称,打开方式)功能:打开一个文件打开方式常用的有7种r 以只读的方式打开文件r+ 以读写的方式打开文件,若文件不存在则会报错w 以只写的方式打开文件w+ 以读写的方式打开文件,若文件不存在则创建,文件存在就清空原有内容a 以追加写的方式打开文件,文件不存在会创建新的文件a+ 以追加读写的方式打开,文件不存在会创建新的文件b 以二进制操作方式打开文件;默认情况下不指定b,则认为

2021-03-13 15:38:04 510

原创 Linux 原来实现一个shell这么容易!(史上最简单详细)

shell实际上是一个命令的解释程序,是一个用户与系统内核沟通的桥梁。那我们能不能通过代码自己实现一个shell呢?当然可以,看完这篇博文,我相信你会受益匪浅!通常情况下,我们linux系统默认的shell是bash,下面是bash的工作流程:总结有以下四步骤:等待用户标准输入对输入的信息进行读取和解析,得到命令名称及命令运行所需要的参数创建子进程,在子进程中进行程序替换,让子进程去运行读取解析后的指定命令父进程等待子进程的退出1、等待用户标准输入#include <stdio.

2021-03-13 12:33:51 3370 11

原创 Linux 进程控制相关函数

目录进程终止`void exit(int status)``void _exit(int status)`进程等待`pid_t wait(int *status)``pid_t waitpid(pid_t pid, int *status, int options)`进程终止进程终止就是退出一个进程在我们学过的c语言函数中,我们都会写主函数main,写完主函数都会return 0;其实这就是终止主函数进程的一个语句。例如以下代码int main(){ printf("hello WhiteShi

2021-03-11 14:47:10 786 1

Git-2.23.0-64-bit.zip

下载Git

2021-01-04

TortoiseGit-2.8.0.0-64bit.zip

git的图形界面工具

2021-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除