
linux
JMW1407
这个作者很懒,什么都没留下…
展开
-
【Linux】守护进程( Daemon)的定义,作用,创建流程
守护进程( Daemon)守护进程( Daemon)1、定义2、作用3、创建流程4、实例参考守护进程( Daemon)1、定义守护进程是运行在后台的一种特殊进程,它独立于控制终端并且周期性地执行某种任务或循环等待处理某些事件的发生;它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机才随之一起停止运行;守护进程一般都以root用户权限运行,因为要使用原创 2020-09-07 08:25:53 · 25884 阅读 · 0 评论 -
C++ 内存管理 —— 如何定位内存泄漏(valgrind)
定位内存泄漏(valgrind)定位内存泄漏(valgrind)1.1、基本概念1.2、使用方法参考定位内存泄漏(valgrind)1.1、基本概念应用环境:Linux编程语言:C/C++使用方法: 编译时加上-g选项,如 gcc -g filename.c -o filename,使用如下命令检测内存使用情况:#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./filename就会看到内存使原创 2020-08-28 00:18:05 · 5778 阅读 · 0 评论 -
linux中查看端口状态以及是否被占用的相关操作指令(netstat、isof)
linux中查看端口状态linux中查看端口状态1、netstat1.1、查看服务器上服务和端口1.2、查看某个端口是否被占用2、lsof:进程打开文件的相关信息2.1、列出80端口目前打开的文件列表2.2、列出所有的网络连接2.3、查看进程打开了某个文件2.4、查看某个用户打开的所有文件参考linux中查看端口状态端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须原创 2020-08-22 12:55:33 · 4854 阅读 · 0 评论 -
linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)
文件操作相关命令文件操作相关命令1、创建文件夹mkdir2、创建文件touch3、移动文件(夹)(类似于剪切)4、删除rm5、重命名mv6、复制cp7、查看文件(cat、head、tail..)8、查找文件 find (重要)9、归档压缩tar10、修改文件权限chmod参考文件操作相关命令1、创建文件夹mkdir# mkdir a 创建一个名为a的文件夹2、创建文件touch# touch a.txt 创建一个名为a.txt的文件3、移动文件(夹)(类似于剪切)# m原创 2020-08-16 00:06:27 · 797 阅读 · 0 评论 -
linux常用操作指令3—— 网络管理常用命令(netstat、ping 、host 、ifconfig、tcpdump )
网络管理常用命令网络管理常用命令1、netstat(检验本机端口的网络连接情况)参考网络管理常用命令1、netstat(检验本机端口的网络连接情况)Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。使用方式netstat [选项] [参数]命令参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示原创 2020-08-13 14:54:44 · 1659 阅读 · 0 评论 -
linux常用操作指令2—— 查看磁盘、内存使用情况(df、du、free、top)
查看磁盘、内存使用情况查看磁盘、内存使用情况1、df 显示磁盘分区上可以使用的磁盘空间2、du 显示每个文件和目录的磁盘使用空间2.1、Linux du命令和df命令区别3、free 显示内存使用情况4、使用top命令监控系统进程参考查看磁盘、内存使用情况1、df 显示磁盘分区上可以使用的磁盘空间显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以原创 2020-08-09 23:51:18 · 21113 阅读 · 0 评论 -
Linux常问面试问题之——用户态与内核态、用户态访问内核态资源的方式、用户态到内核态的切换
用户态与内核态用户态与内核态1、背景2、定义3、用户态访问内核态资源的方式3.1、系统调用3.2、库函数3.3、Shell脚本4、用户态到内核态怎样切换?参考用户态与内核态1、背景当我们在写程序是,凡是涉及到IO读写、内存分配等硬件资源的操作时,往往不能直接操作,而是通过一种叫系统调用的过程,让程序陷入到内核态运行,然后内核态的CPU执行有关硬件资源操作指令,得到相关的硬件资源后在返回到用户态继续执行,之间还要进行一系列的数据传输。假设没有这种内核态和用户态之分,程序随随便便就能访问硬件资源,比如说原创 2020-08-09 22:28:32 · 9778 阅读 · 0 评论 -
linux常用操作指令1—— 查看和管理进程指令(ps、top、pstree、kill)
linux下查看和管理进程查看和管理进程1、使用ps命令监控系统进程2、使用pstree命令监控系统进程3、使用top命令监控系统进程4、结束进程参考查看和管理进程1、使用ps命令监控系统进程ps:查看进程状态 (一个瞬间的进程状态,静态)语法: ps [options]参数格式: UNIX格式:一个"-"开头 BSD格式:没有"-"开头 GNU长格式:两个"-"开头常用参数: a # 显示与终端相关的所有进程,包含每个进程的完整路径 u # 显原创 2020-08-02 18:46:49 · 3649 阅读 · 0 评论 -
什么是信号(signal)?信号的处理机制?利用信号进行简单的进程通信过程设计(c++)?
信号(signal)信号(signal)1、背景2、定义3、处理机制3.1、信号来源3.2、信号的响应动作(前32种)3.3、信号在内核中的表示3.4、信号处理流程3.4.0、信号发送3.4.1、信号接收3.4.2、信号的检测3.4.3、信号的查看与处理3.4.4、简单实例过程说明4、相关API函数4.1、信号发送函数5、实验测试参考信号(signal)1、背景信号(Signal)主要用来通知进程某个特定事件的发生,或者是让进程执行某个特定的处理函数。所以,信号可以说是进程控制的一部分。我们以普通的原创 2020-08-02 11:14:53 · 4373 阅读 · 0 评论 -
什么是共享内存?在内存中的具体位置?shmget的具体使用原理以及其他关联函数(shmat ( ),shmdt ( ),shmctl ( ))、以及C++应用案例?mmap和shm的区别?
共享内存(shared memory)共享内存1、背景2、定义3、两种方式(mmap上一篇博客说明)3.2、shmget3.2.1、使用流程和基本原理3.2.2、函数原型(创建共享内存)3.2.3、其他相关AP函数3.2.3.1、shmat ( ):挂接共享内存3.2.3.2、shmdt ( ):去关联共享内存3.2.3.3、shmctl ( ):控制共享内存3.2.4、应用实例4、mmap和shm的区别参考共享内存1、背景当存在客户-服务程序中复制文件时候,其数据流如下,要经历四次数据复制,开销很大原创 2020-08-01 18:53:06 · 3524 阅读 · 0 评论 -
什么是共享内存?在内存中的具体位置?共享内存相关API,mmap 的具体使用原理、以及C++应用案例?
共享内存(shared memory共享内存共享内存共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。共享内存是内核为进程创建的一个特殊内存段,它将出现在进程自己的地址空间中,其它进程可以将同一段共享内存连接(attach)到自己的地址空间。这是最快的进程间通信方式,但是不提供任何同步功能(需要我们信号量实现)。https://b原创 2020-08-01 00:23:30 · 8131 阅读 · 0 评论 -
一文让你明白,什么是管道(pipe)?进程之间利用管道进行通信的具体流程?以及C++简单利用管道API函数的使用案例。
进程通讯方式——管道(pipe)管道(pipe)1、定义(水管(pipe))2、分类2.1、匿名管道2.1.1、特征2.1.2、父子进程通信过程解析2.1.3、API函数的使用以及注意点2.1.4、应用实例2.2、命名管道2.2.1、特征2.2.2、使用API函数2.2.3、应用实例参考管道(pipe)什么是进程间通信?每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B原创 2020-07-30 22:31:19 · 18553 阅读 · 4 评论 -
linux程序运行过程中的文件描述符(file descriptor)是什么?socket 和 文件描述符之间的关系?
文件描述符是什么文件描述符(file descriptor)1、背景(何为文件?)2、定义3、具体应用4、与fd相关的内核维护的3个数据结构5、socket 和 文件描述符之间的关系参考文件描述符(file descriptor)1、背景(何为文件?)在Linux操作系统中,可以将一切都看作是文件,包括普通文件,目录文件,字符设备文件(如键盘,鼠标…),块设备文件(如硬盘,光驱…),套接字等等,所有一切均抽象成文件,提供了统一的接口,方便应用程序调用既然在Linux操作系统中,你将一切都抽象为了文件原创 2020-07-28 14:25:19 · 3236 阅读 · 1 评论 -
GNU make— —教你快速入门Makefile教程1
Makefile教程Makefile教程1、定义1.1、引出举例1.2、定义2、Makefile文件的格式2.1、目标(target)2.2、前置条件(prerequisites)2.3、命令(commands)参考Makefile教程1、定义1.1、引出举例四则运算实例//add.h,加法#ifndef _ADD_H#define _ADD_Hint add(int a,int b);#endif//sub.h ,mul.h,div.h同上,只需要改一下函数名//add.cpp原创 2020-07-16 11:26:45 · 523 阅读 · 0 评论 -
为什么要使用多线程?创建多少个线程合适?什么是线程池?
多线程https://www.jianshu.com/p/f30ee2346f9f原创 2020-07-11 22:22:07 · 4528 阅读 · 0 评论 -
linux下的进程(process)相关API函数(创建(fork vfork clone)、回收(wait\waitpid)、退出(exit\_exit))及软件开发相关面试问题
linux下的进程创建相关API函数原创 2020-06-26 23:11:03 · 1149 阅读 · 0 评论 -
linux下的进程(process)相关概念(定义、组成、状态、PCB、分类(僵尸、孤儿、守护进程)、进程的监控(查看命令))及软件开发相关面试问题
linux下的进程创建相关API函数进程(process)1、进程定义2、进程的分类3、进程状态4、进程的组成4.1、正文段(text)和用户数据段4.2、PCB进程控制块参考进程(process)1、进程定义进程是 Unix 和 Linux 系统中对正在运行中的应用程序的抽象,通过它可以管理和监视程序对内存、处理器时间和 I / O资源的使用。程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中,操 作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正原创 2020-06-25 23:09:12 · 1409 阅读 · 0 评论 -
linux系统启动过程介绍
linux系统启动过程linux系统流程1、加电2、BIOSPOST自检 +初始化设备3、主引导记录(Master boot record,MBR)——如何找到操作系统?4、GRUB(启动管理器)->Kernel5、sbin/init6、Runlevel programs参考linux系统流程通电->BIOS->MBR->GRUB->Kernel->/sbin/init->Runlevel1、加电电脑启动后,CPU逻辑电路被设计为只能运行内存中的程序,没有原创 2020-06-24 21:04:30 · 350 阅读 · 0 评论 -
linux线程同步方式5——读写锁(rwlock)
读写锁(rwlock)读写锁1、背景和定义1. 背景:读者和写者问题2. 定义3. 读写锁三种状态4. 读写锁特性2、初始化3、请求读锁(阻塞)4、请求读锁(非阻塞)5、请求写锁(阻塞)6、请求写锁(非阻塞)7、解锁8、销毁互斥锁、读写锁、自旋锁区别应用举例参考读写锁#include <pthread.h>1、背景和定义1. 背景:读者和写者问题有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书。特征:(1)任意多的读进原创 2020-06-17 23:12:06 · 3189 阅读 · 0 评论 -
linux线程同步方式4——自旋锁(Spinlock)
自旋锁(Spinlock)自旋锁1、背景和定义2、自旋锁适用情况3、自旋锁有几个重要的特性4、自旋锁死锁情况举例5、spin lock相关的API函数1、初始化2、加锁3、解锁4、销毁6、自旋锁和互斥锁对比7、自旋锁和互斥锁运行实验对比参考自旋锁https://www.cnblogs.com/biyeymyhjob/archive/2012/07/21/2602015.html1、背景和定义自旋锁它是为为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互原创 2020-06-16 23:14:32 · 3727 阅读 · 0 评论 -
linux线程同步方式3——信号量(semaphore)
信号量信号量1、定义2、基本操作1、信号量初始化sem_init函数原型2、信号量等待sem_wait函数原型3、发送(释放)信号量sem_post函数原型4、测试信号量sem_getvalue函数原型5、销毁信号量 sem_destroy函数原型应用实例参考信号量1、定义#include <semaphore.h>信号量又称为信号灯,它是用来协调不同线程(进程)间的数据对象的。本质上,信号量是一个计数器,它用来记录对某个资源的存取状况。一般说来,为了获得共享资源,进程需要执行下列操原创 2020-06-15 22:23:44 · 1741 阅读 · 0 评论 -
linux线程同步方式2——条件变量(Condition Variable)
条件变量条件变量1、定义2、创建3、销毁4、阻塞(等待)无条件等待pthread_cond_wait执行后的内部操作计时等待5、激发signal()激活broadcast() 激活5、应用举例为什么pthread_cond_wait需要加锁?消费者线程中判断条件换成if可不可以呢?signal到底是放在unlock之前还是之后?互斥量与条件变量参考条件变量#include <pthread.h>1、定义条件变量是利用线程间共享的全局变量进行同步的一种机制,这些同步对象为线程提供了会原创 2020-06-14 22:38:27 · 1114 阅读 · 0 评论 -
linux线程同步方式1——互斥锁(mutex)
互斥锁(mutex)互斥体互斥锁1、定义2、属性3、使用流程(相关API函数)pthread_mutex_init()1、定义2、函数原型:3、返回值:4、初始化方式pthread_mutex_destroy()1、定义2、函数原型pthread_mutex_lock()(阻塞)1、定义2、函数原型3、基于mutex类型的返回值pthread_mutex_unlock()1、定义2、函数原型互斥锁应用举例参考互斥体互斥体实现了“互相排斥”(mutual exclusion)同步的简单形式(所以名为互斥原创 2020-06-13 23:15:44 · 1292 阅读 · 1 评论 -
linux下的线程创建相关API函数(pthread _create、pthread _join、pthread _detach、pthread _concel、pthread _kill)
linux下的线程创建以及线程通讯相关API函数线程创建相关API函数pthread _create(创建线程函数)1. 头文件2. 函数原型3. 参数说明4. 返回值:5. 举例说明:6、传递不同参数pthread_join()1. 含义2. 背景3. 函数原型4. 第二个参数说明5. 终止状态(线程返回值)6、回收子线程的返回值pthread_detach()1、背景2、函数原型3、返回值4、detached状态线程创建相关API函数pthread _create(创建线程函数)1. 头文件#原创 2020-06-13 17:32:49 · 2664 阅读 · 0 评论