linux
文章平均质量分 70
月已满西楼
某不知名学校毕业学生,某不知名名企软件工程师,擅长C++
python,Mysql
展开
-
linux下编写进度条
linux 进度条源代码:#include#includeint main(){ int i=0;char bar[102];const char *lable="-\\|/";bar[0]='\0';while(i{printf("[%-100s][%%%d] [%c]\r",bar,i,lable[i%4]);bar[i++]='#';ff原创 2017-02-17 20:24:45 · 384 阅读 · 0 评论 -
http服务器小项目
1. http项目整体框架1.1http协议格式http请求由三部分组成,分别是:起始行、消息报头、请求正文Request Line<CRLF>Header-Name: header-value<CRLF>Header-Name: header-value<CRLF>//一个或多个,均以<CRLF>结尾<CRLF>body//请求正文起始行以一个方法符号开头,以空格分开,后面跟着请求的URI和协原创 2017-07-17 11:40:15 · 874 阅读 · 1 评论 -
linux复习之进程基础知识
典型进程的ID及其功能 ID 进程名 中文名 类型 作用 0 swapper 交换进程 系统进程 它是内核⼀一部分,不执⾏行磁盘上的程序,是调度进程。 1 init init进程 用户进程 永远不会终⽌止,启动系统,读取系统初始化的文件。 2 pagedaemon 页精灵进程 系统进程 虚存系统的请页操作实际用户和有效用原创 2017-07-22 23:41:13 · 321 阅读 · 0 评论 -
linux知识总结4
1. gdb调试这里写代码片2. 进程切换需要注意哪些问题? 保存处理器PC寄存器的值到被中止进程的私有堆栈; 保存处理器PSW寄存器的值到被中止进程的私有堆栈; 保存处理器SP寄存器的值到被中止进程的进程控制块; 保存处理器其他寄存器的值到被中止进程的私有堆栈; 自待运行进程的进程控制块取SP值并存入处理器的寄存器SP; 自待运行进程的私有堆栈恢复处理器各寄存器的原创 2017-07-20 00:07:40 · 273 阅读 · 0 评论 -
模拟实现ls-l进阶
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <time.h>#include <pwd.h>#include <grp.h>#include<dirent.h>void print(char *filename)原创 2017-08-16 10:29:31 · 479 阅读 · 0 评论 -
select模型
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>#include <ctype.h>#include "wrap.h"int main(int argc, char *argv[]){ int i, j, n, maxi; in原创 2017-08-17 13:32:42 · 340 阅读 · 0 评论 -
动态库与静态库
一、什么是静态库动态库静态库:一般名字是libXXX.a,其中XXX是库的名字,利用静态库便于的文件比较大,因为整个函数库的所有数据都会被整合到目标代码中,优点就是编译后的程序不需要外部库的支持,但是也是缺点,因为如果静态函数库要变化的话,程序就必须重新编译动态库:一般名字是libXXX.M.N.so,其中,XXX是库的名字,M是库的主版本号,N是库的副版本号。也可以不要版本号,但是名字必须有,原创 2017-08-25 20:54:57 · 355 阅读 · 0 评论 -
定时器&&三次握手&&滑动窗口&&DNS
1. TCP/IP四层模型中常见的定时器保活定时器 保活计时器用来防止两个TCP之间的连续出现长时间的空闲。 假定客户已主动与服务器建立了TCP链接。然后这个客户端出现故障。在这种情况下,这个链接就会永远的处于打开状态。而服务器维护一个链接,也是要耗费一定的资源的,所以必须采取措施,使服务器不能白白等下去。 要解决这种问题,就要对服务器设置保活计时器。每当服务器收到客户的信息,原创 2017-08-25 18:14:08 · 714 阅读 · 0 评论 -
TCP格式&&可靠性保证&&URG PSH区别
1. 电路交换和分组交换的区别,优劣对比2. TCP/IP协议有哪几层,各层的作用是什么?列举各层主要的协议名称 应用层:提供应用层面沟通的层 主要协议:ftp http smtp telnet(tcp) dns(udp) ping(icmp) 传输层:提供节点间的数据传输服务 主要协议:tcp(基于字节流面向链接,所以长连接时容易出现粘包问题)、udp(基于数据报,无连接原创 2017-08-25 16:27:31 · 522 阅读 · 0 评论 -
用户栈内核栈&&池化技术&&死锁相关
一、用户栈和内核栈的区别,为什么不用一个栈 操作系统中,每个进程会有会有两个栈,一个用户栈,一个内核栈,当进程在用户空间运行时,CPU堆栈指针寄存器里面的内容是用户栈的地址,使用用户栈,当进程在内核空间运行时,CPU堆栈指针寄存器里面的内容是内核栈的地址,使用内核栈 内核栈的作用 保存中断现场,当进程由于中断进入内核态时,系统会把一些用户 态的数据信息保存到内核栈中,当返回到用户态时,原创 2017-08-21 12:39:10 · 376 阅读 · 0 评论 -
linux常用命令复习
1. 目录linux绝对路径用什么符号表示? 在Linux中,绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。如果一个路径是从/开始的,它一定是绝对路径,这样就好理解了;当前目录上级目录用什么表示?切换目录用什么命令?当前目录:./ 上级目录 ../ 切换目录 cd 2. 怎么查看当前进程?怎么执行退出?怎么查看当前路径?名称:ps使用权限:所有使用者使用方式原创 2017-08-06 16:42:01 · 941 阅读 · 0 评论 -
CRC冗余校验算法&&MTU
一、CRC冗余校验算法CRC原理: 先选择一个用于在接收端进行校验时,对接收的贞进行除法运算的除数看所选定的除数的二进制位数(假定为K位),然后要在要求发送的数据帧后面加上K-1位0,然后这个加了K-1位0的新帧中,以模2除法的方式,除以上面这个除数,所得到的系数就是该帧的CRC校验码。把这个校验码附在源数据帧的后面(不是加0以后的),构建一个新帧发送到接收端,在接收端以“模2除法”方式除以原创 2017-08-26 09:51:14 · 626 阅读 · 1 评论 -
进程状态&&调度算法&&进程线程区别&&进程通信方式&&线程同步
一、进程有哪几种状态?画出状态转换图。 进程就绪—>进程调度(13)—>执行 进程执行—>时间轮片用尽/被抢占—>就绪 进程阻塞—>事件发生—>就绪 进程执行—>事件请求—>阻塞 在linux系统下有一种进程的状态叫做僵死状态,这种状态是由于子进程已经退出但是父进程没有回收子进程造成的,(因为子进程结束时往往会给父进程发一个SIGCHILD信号,所以在网络编程中为了防原创 2017-08-21 01:21:32 · 623 阅读 · 0 评论 -
linux fork详解
一、fork写时复制测试#include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;amp;gt;i原创 2018-12-20 15:36:28 · 224 阅读 · 0 评论 -
linux写时复制技术初探
COW技术初窥:在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程...原创 2018-12-20 16:17:50 · 282 阅读 · 0 评论 -
孤儿进程 僵尸进程 守护进程及wait函数详解
一、 孤儿进程孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init进程领养孤儿进程。二、 僵尸进程僵尸进程: 进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。特别注意,僵尸进程是不能使用kill命令清除掉的。因为kill命令只是用来终止进程的,而僵尸进程已经终止。思考!用什么办法可清除掉僵尸进程呢...原创 2018-12-22 15:29:17 · 261 阅读 · 0 评论 -
shell脚本攻略读书笔记
1.11调试脚本#!/bin/bashfunction DEBUG(){ [ "$_DEBUG" == "on" ] && $@ || :}for i in {1..10}do# echo $i是DEBUG的参数,如果_DEBUG==on则该语句为 $@也就是参数(echo $i),#若果_DEBUG!=on则为:也就是告诉shell不执行任何操作 DEBUG ...原创 2019-01-22 10:21:26 · 189 阅读 · 0 评论 -
linux系列文章
全部 只显示已发表文章 只显示私密文章 只显示草稿文章 重置搜索shell脚本攻略读书笔记孤儿进程 僵尸进程 守护进程及wait函数详解linux写时复制技术初探linux fork详解CRC冗余校验算法&&MTU动态库与静态库定时器&&三次握手&&滑动窗口&&DNSTCP格式&&可靠性保证&&URG PSH区别用户栈内核栈&...原创 2019-05-23 10:48:54 · 322 阅读 · 0 评论 -
linux知识点总结3
环境变量每个用户登陆后都会有自己专属的环境变量,在linux中环境变量一般都是大写加下划线命名环境变量。环境变量类似一个指针,在查看环境变量时要在前面加$.linux变量分为本地变量和环境变量 环境变量是一种全局变量,存在与所有shell中,环境变量具有继承性,子进程可以继承父进程的环境变量。 本地变量当前shell中的变量,本地变量包含环境变量,本地非环境变量不具有继承特性。在l原创 2017-07-17 00:58:11 · 526 阅读 · 0 评论 -
ifconfig详解
[dasheng@localhost code]$ ifconfigeth0 Link encap:Ethernet HWaddr 00:0C:29:1E:FF:6B inet addr:192.168.246.128 Bcast:192.168.246.255 Mask:255.255.255.0 inet6 addr: fe80::2原创 2017-06-15 16:50:12 · 525 阅读 · 0 评论 -
TCP定时器详解
TCP使用四种定时器(Timer,也称为“计时器”): 重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Keeplive Timer 时间等待计时器:Time_Wait Timer。重传计时器: 重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传原创 2017-06-26 15:03:03 · 338 阅读 · 0 评论 -
atexit 详解
对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方。当内核使⽤⼀个exec函数执⾏C程序时,在调⽤main函数之前先调⽤⼀个特殊的启动例程,可执⾏程序将此例程指定为程序的起始地址。启动例程从内核获取命令⾏参数和环境变量,然后为调⽤main函数做好准备。 前面我们关注的是程序开始进入时的调用函数,而atexit函数是一个原创 2017-02-20 19:31:53 · 379 阅读 · 0 评论 -
task_struct
进程描述符task_struct 1、进程状态 [cpp] view plain copy volatile long state; int exit_state; state成员的可能取值如下: [cpp] view plain copy #define TASK转载 2017-02-20 19:48:41 · 567 阅读 · 0 评论 -
linux进程调度算法
一、进程的状态:1、操作系统中:进程是一个动态的实体,所以他是有生命的。从创建到消亡,是一个进程的整个生命周期。在这个周期中,进程可能会经历各种不同的状态。一般来说,所有进程都要经历以下的3个状态:(1)就绪态。指进程已经获得所有所需的其他资源,正在申请处理处理器资源,准备开始执行。这种情况下,称进程处于就绪态。(2)阻塞态。指进程因为需要等待所需资源而放弃处理器,翻译 2017-02-20 20:27:30 · 562 阅读 · 0 评论 -
内存管理单元MMU的原理
如下图 1. cpu访问内存的级别有4种级别,linux只是用了2种级别,内核空间是0级,用户空间是3级 2. 32位的地址空间一共4G,0-3G是用户空间,3-4G是内核空间原创 2017-04-30 15:22:55 · 1478 阅读 · 0 评论 -
cpu的简易架构
cpu简易架构如图所示: - 硬盘里的程序被读取到内存中 - 从内存读取到缓冲区cache中 - 预取器从cache里单条取指令 - 将指令交给译码器译码 - 算罗单元进行逻辑运算,然后将结果放到寄存器中, - 再将寄存器中的结果写入到cache中 MMU:内存管理单元,负责虚拟地址空间的映射,最小映射单位是页,一页大小为4KALU:算数逻辑单元,只有+和<<两种运算原创 2017-04-30 15:09:16 · 672 阅读 · 0 评论 -
PCB详解
我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。 /usr/src/…/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。task_struct 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实是一个非负整数。进程的状态,有就原创 2017-04-30 16:16:11 · 6580 阅读 · 2 评论 -
linux小项目模拟实现ls-l用stat
模拟实现ls-l#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <time.h>#include <pwd.h>#include <grp.h>int main(int argc, char* argv[]){原创 2017-04-30 16:22:09 · 1505 阅读 · 0 评论 -
网络编程day7socket编程
client client.c的作用是从命令行参数中获得一个字符串发给服务器,然后接收服务器返回的字符串并打印。/************************************************************************* > File Name: client.c > Author: sunxingying > Mail: 11590原创 2017-05-24 21:28:06 · 437 阅读 · 0 评论 -
使用gdb调试多进程和多线程程序
默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明 parent原创 2017-06-04 20:34:44 · 577 阅读 · 0 评论 -
守护进程详解
1. 守护进程是什么? 守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。守护进程脱离终端的主要原因有两点: (1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。 2. 守护进程的创建调用umask将文件模式创建屏蔽字设置为0.调用fork,父进程退出(exit ) 原因:1)如果该守护进程是作为一条简单的shel原创 2017-06-07 16:48:58 · 685 阅读 · 0 评论 -
select详解
为了代码的简洁性首先将常用的函数进行了一次封装,分装了出错处理的内容 wrap.h#ifndef __WRAP_H_#define __WRAP_H_void perr_exit(const char *s);int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr);int Bind(int fd, const struct s原创 2017-06-28 17:43:52 · 539 阅读 · 0 评论 -
epoll服务器小结
epoll简介: epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合原创 2017-06-30 09:28:10 · 304 阅读 · 0 评论 -
crond和crontab详解
一、crontab是什么? crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。 系统任务调度:系统周期性所原创 2017-06-08 16:16:35 · 50095 阅读 · 1 评论 -
linux命令eval的用法
eval用法功能说明:告知shell取出eval的参数,重新运算求出参数的内容。 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。 参 数:参数不限数目,彼此之间用分号分开。 1. 执行命令行之前扫描它两次,再次运算求出参数的内容。 2. eval取得最后一个参数 $()与· · 三者的的区别?反引号“本身对\进行了转义,并保留原创 2017-07-01 17:28:52 · 358 阅读 · 0 评论 -
Linux面试要点
1. 进程有那几种状态,状态转换图,及导致转换的事件 如上图所示,进程包括三种状态:就绪态、运行态和阻塞态。详细说明如下: 注意:创建和退出不是进程的状态。阻塞和就绪的区别:阻塞是等待除CPU以外的资源,而就绪等待的是CPU资源。就绪——执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态;执行——阻塞:正在执行的原创 2017-07-10 20:06:46 · 1341 阅读 · 0 评论 -
linux面试准备2
1. 线程的实现方式. (也就是用户线程与内核线程的区别)内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。 线原创 2017-07-11 17:21:30 · 745 阅读 · 0 评论 -
IO中同步异步阻塞非阻塞的区别
一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数原创 2017-07-03 16:49:50 · 552 阅读 · 0 评论