Linux
Linux基础学习
Ch_zaqdt
这个作者很懒,什么都没留下…
展开
-
Linux网络I/O模型以及epoll详解
LinuxI/O网络模型:https://www.cnblogs.com/lojunren/p/3850057.html LinuxI/O复用与epoll详解:https://www.cnblogs.com/lojunren/p/3856290.html转载 2020-03-28 16:31:56 · 364 阅读 · 0 评论 -
Ubuntu设置时区时间
我们可以通过date来查看当前的时间时区等信息,如果不是CST时区那么可能就和当前的时间不符,我们可以通过下面的命令来设置时区:tzselect 然后依次选择Asia,China,Beijing等就可以了,然后再次查看date就可以看到已经修改成功了,但是重启开机的话可能又恢复回去了,这时我们执行下面的命令:sudo cp /usr/share/zo...原创 2020-03-22 18:42:41 · 607 阅读 · 0 评论 -
日志模块--手动实现printf函数demo
整体的实现思路就是传入一个字符串以及需要的参数(可变参数),通过对%的处理来获取我们所需要的类型,从而实现格式化字符串的操作( ("Hello %s world", "nginx") -> "Hello nginx world"),主要是细节的处理,比如有无符号类型,以及16进制转换和保留小数等问题,需要仔细思考。#include <stdio.h>#...原创 2020-03-22 17:36:57 · 310 阅读 · 0 评论 -
Linux C++守护进程demo
学习笔记#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>int ngx_deamon(){ sw...原创 2020-03-17 18:34:17 · 296 阅读 · 0 评论 -
VMWare Ubuntu Server 18.04共享文件夹解决方法
查了好多的方法最终都还是显示不出来共享文件夹,一般查到的都是挂载/dev/cdrom然后重装vmtools,也试了还是没有显示出来,最终找到了这个方法,终于成功了。首先要确保安装了vmtools,我们可以通过vmware-hgfsclient命令查看一下共享的目录,如果有的话说明是共享成功过的然后输入下面的命令sudo/usr/bin/vmhgfs-fuse .hos...转载 2020-03-16 16:54:47 · 1471 阅读 · 0 评论 -
Linux下的SIGCHLD信号
对于父子进程来说,父进程可以通过wait或这waitpid函数来释放子进程的资源,也可以通过waitpid获得子进程的退出状态。那么这个实现过程是通过阻塞等待,或者不断的轮询。那么这两个操作对于父进程来说都不是理想的,因此可以通过SIGCHLD信号来实现异步的操作。也就是当子进程结束的时候通过SIGCHLD信号告诉父进程,然后父进程再去释放其资源,如果没有收到该信号也不影响父进...原创 2020-03-06 14:47:58 · 539 阅读 · 0 评论 -
Linux时序竞态问题(sleep函数的实现)
时序竞态是指同样的程序,多次调用运行的结果不同,这是由于争夺系统资源所造成的。比如说我们要使用alarm和pause函数来实现一个sleep的功能,那么由于alarm函数的实现过程并不是一个原子操作,那么随时可能被中断。比如说alarm了1秒,在这个过程中,进程失去了CPU,然后当该进程再次获得CPU的时候可能这个时间已经大于1秒了,那么对于alarm来说就已经发出了SIGAL...原创 2020-03-05 15:05:52 · 341 阅读 · 0 评论 -
Makefile的详细教程
初学Makefile,也只是会一些简单的语句。找到了很好的Makefile的讲解:跟我一起写Makefile,还有一个是比较不错的排版的分享一下:传送门转载 2020-03-03 15:43:44 · 202 阅读 · 0 评论 -
Linux的gdb调试命令(详细)
转自:[https://blog.csdn.net/gatieme/article/details/51671430](https://blog.csdn.net/gatieme/article/details/51671430?ops_request_misc=%7B%22request_id%22:%22158320384719725222455321%22,%2...转载 2020-03-03 11:02:54 · 3913 阅读 · 0 评论 -
Linux的内存共享映射(mmap和munmap)
Linux下的进程间通信也可以使用mmap的内存共享映射来实现,mmap的作用就是把磁盘文件的一部分直接映射到进程的内存中,那么进程就可以直接对该内存文件进行操作,mmap也设置了两种机制:共享和私有,...原创 2020-03-02 17:11:52 · 617 阅读 · 0 评论 -
Linux进程间通信--管道(pipe和fifo)
通过管道来实现进程间的通信的方法很经典,因为多个进程共享3-4G中的内核,所以在内核中存在一个管道(缓冲区),然后进程通过连接管道的两端从而实现通信。假如说我们现在有一根管道,我们从左端放入一个小球,那么它会从右端滚出来,那么如果我们同时向两端都放入一个小球,那么就不可能实现交叉传递了,所以管道是半双工通信(即双方都可以发送信息,但是双方不能同时发送信息),因此管道的两端一端是...原创 2020-02-29 20:59:00 · 370 阅读 · 0 评论 -
Linux孤儿进程和僵尸进程详解(wait和watipid)
当一个进程使用了fork函数会创建一个新的子进程,那么就会存在两个问题,一个是子进程没有结束但是父进程结束了,另一个是子进程结束了但是父进程没有回收子进程的资源。这两种情况就产生了孤儿进程和僵尸进程。下面会通过实际进程运行的示例来进行说明。首先先来明确一个知识点,在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号...原创 2020-02-28 16:55:40 · 655 阅读 · 1 评论 -
Linux下exec函数族详解
对于exec函数族来说,它的作用通俗来说就是使另一个可执行程序替换当前的进程,当我们在执行一个进程的过程中,通过exec函数使得另一个可执行程序A的数据段、代码段和堆栈段取代当前进程B的数据段、代码段和堆栈段,那么当前的进程就开始执行A中的内容,这一过程中不会创建新的进程,而且PID也没有改变。一般exec函数族的用途有以下两种: 1. 当进程不需要再往下继...原创 2020-02-27 17:46:41 · 610 阅读 · 0 评论 -
Linux系统编程fork详解
使用fork函数会创建一个和父进程相同的子进程。在调用了fork函数后,会先为子进程申请一个PID号,然后申请一个PCB结构,然后将父进程的PCB结构复制过来,对于父进程的虚拟空间内的内容用到了读时共享,写时复制的机制(下面会讲)。 #include <sys/types.h> #include <unistd.h>...原创 2020-02-27 14:26:05 · 324 阅读 · 0 评论 -
Linux 文件I/O操作(简单实现文件复制)
简单的实现一下文件的复制操作,直接贴源码了,中间也有一些注释,至于更多的详细的命令参数,推荐看下这篇博客,讲的很详细:传送门#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <st...原创 2020-02-19 19:49:50 · 1191 阅读 · 0 评论 -
Linux的静态库和共享库详解及实例
库的本质上是一个可执行的二进制文件,但是它并不能独立的执行。简单的来说,就相当于一个仓库,把你已经写好的功能函数放到库中,然后后续需要时通过正确的接口去使用相应的功能,当然可以把库分享给别人也很方便。在Linux下分为静态库和共享库(也叫动态库),当然Windows下也有静态库(.lib)和动态库(.dll),这里主要是讲解Linux下的静态库和共享库,以及它们的简单实现。...原创 2020-02-19 12:34:27 · 371 阅读 · 0 评论 -
vi常用命令--当词典用
转自:https://www.cnblogs.com/Noble-Monster/p/11289638.html转载 2020-02-17 17:19:43 · 142 阅读 · 0 评论 -
Ubuntu安装ftp服务器以及可能遇到的问题
使用的是Ubuntu18.04,首先使用apt命令去安装ftpsudo apt install vsftpd 安装过后其实就可以去运行ftp服务器了,使用的配置都是默认的配置,我们可以用netstat -ntl来查看ftp启用的端口 可以看到使用的是默认端口21,然后用service命令来查看ftp服务器的状...原创 2020-02-16 12:41:05 · 961 阅读 · 0 评论 -
Ubuntu下U盘挂载及卸载
对于服务器版本的来说不能直接去点击U盘操作里面的内容,所以只能通过命令去操作U盘的内容。首先我们先使用sudo fdisk -l这个命令来查看一下当前的硬盘的信息,然后将我们的U盘连接至虚拟机,再次使用这个命令来查看一下,就可以查到U盘的设备名称,如下图: 然后通过mount命令将其挂载到一个文件夹中,这里以mnt为例。 ...原创 2020-02-15 15:04:39 · 1287 阅读 · 0 评论