Linux
文章平均质量分 87
xiaocherry1128
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
守护进程
守护进程1、守护进程定义:守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。Linux系统原创 2017-05-10 17:31:40 · 272 阅读 · 0 评论 -
Linux必学的60个命令
linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命转载 2017-08-09 17:27:29 · 2157 阅读 · 0 评论 -
linux虚拟地址空间
虚拟地址通过页表(Page Table)映射到物理内存,页表由操作系统维护并被处理器引用。内核空间在页表中拥有较高特权级,因此用户态程序试图访问这些页时会导致一个页错误(page fault)。在Linux中,内核空间是持续存在的,并且在所有进程中都映射到同样的物理内存。内核代码和数据总是可寻址,随时准备处理中断和系统调用。与此相反,用户模式地址空间的映射随进程切换的发生而不断变化。 Linu原创 2017-08-15 16:03:01 · 740 阅读 · 0 评论 -
linux之find指令演示
原创 2017-02-15 13:10:23 · 357 阅读 · 0 评论 -
多线程编程
线程概念:每个正在系统上运行的程序都是一个进程。每个进程包含一个到多个线程。进程也可能是整个程序或部分程序的动态执行,线程是一组指令的集合或者是程序的特殊段,它可以在程序里单独执行。线程也可以理解为代码运行的上下文。线程是程序一个单一的顺序控制流程,在单个进程中同时运行多个线程完成不同的工作,称为多线程。进程和线程的区别: 1、子进程原创 2017-08-19 11:17:39 · 311 阅读 · 0 评论 -
Linux进程间通信
进程间通信的目的1、数据传输:一个进程需要将它的数据发送给另一个进程。2、资源共享:多个进程之间共享同样的资源。3、通知事件:一个进程需要向另一个或一组进程发送信息,通知它们发生了某种事情。4、进程控制:有些进程希望完全控制另一个进程。此时控制进程能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。管道管道是单向的、先进先出的、无结构的、固定大小的字节流。创建原创 2017-08-17 18:19:33 · 375 阅读 · 0 评论 -
Linux系统编程--终端和守护进程
内核中处理终端设备的模块1、硬件驱动程序:负责读写实际的硬件设备,比如从键盘读入字符和把字符输出到显示器。2、线路规程:就像一个过滤器,对于某些特殊字符并不是让它直接通过,而是做特殊处理。终端设备输入输出队列缓冲区以输入队列为例:从键盘输入的字符经过线路规程过滤后进入输入队列,用户程序以先进先出的顺序从队列中读取字符,一般情况下,当输入队列满的时候再输入字符会丢失,同时系统会响原创 2017-08-24 17:02:00 · 526 阅读 · 0 评论 -
Linux之select函数
select的作用系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdi原创 2017-09-04 13:45:51 · 1044 阅读 · 1 评论 -
select poll epoll总结
I/O请求分两步1、先将数据从存储介质(磁盘、网络等)拷贝到内核缓冲区,此时数据已准备好,可以被用户应用程序读取。2、由用户应用程序拷贝内核缓冲区的数据到用户缓冲区。duo和dup2函数dup和dup2的作用都是用复制一个文件描述符。它们经常用来重定向进程的stdin,stdout和stderr。两个函数的原型:#include int dup( int oldfd原创 2017-08-22 22:50:56 · 489 阅读 · 2 评论 -
fork一个子进程会拷贝父进程的什么
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> void main() { char str[6]="hello"; pid_t pid=fork(); if(pid=...转载 2017-08-30 15:47:15 · 2209 阅读 · 1 评论 -
进程概论
进程数据块(task_struct)task_struct是Linux内核的⼀种数据结构,它会被装载到RAM(随机存储器)里并且包含着进程的信息。每个进程都把它的信息放在 task_struct 这个数据结构里task_struct包含了这些内容:标示符 : 描述本进程的唯⼀标示符,用来区别其他进程。状态 :任务状态,退出代码,退出信号等。优先级 :相对于其他进程的优先级...原创 2017-08-30 20:46:08 · 352 阅读 · 0 评论 -
发布QT程序安装包
一、Windows下发布安装包1、准备QT下载安装:http://download.qt.io/archive/qt/qt-installer-framework 下载安装:http://download.qt.io/official_releases/qt-installer-framework/ Windows系统下载:QtInstal...原创 2019-01-30 16:21:51 · 893 阅读 · 1 评论 -
希尔排序和shell之希尔排序
希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。基本思想先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况原创 2017-08-02 13:52:33 · 382 阅读 · 0 评论 -
linux中的eval解析
1、eval的定义 会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。2、eval 执行步骤第一次,执行变量替换,类似与C语言的宏替代。第二次,执行替换后原创 2017-06-28 13:48:16 · 520 阅读 · 0 评论 -
linux中``(反引号)和$()d的区别
``(反引号)和$()1、概念与不同 ``和$()是一样的。在执行一条命令时,会先将其中的 ``或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:1、``很容易与''搞混乱,尤其对初学者来说。2、在多层次的复合替换中,``必须要额外的跳脱处理(反斜线),而$( )比较直观。3、原创 2017-06-28 13:24:07 · 811 阅读 · 0 评论 -
linux 中shell的简单写法
#include#include#include#include#includeint main(){char buf[128];while(1){printf("[test@my-host-name myshell]");fflush(stdout);sleep(3);ssize_t _s = read(0,buf,sizeof(buf) -原创 2017-02-23 23:53:07 · 559 阅读 · 0 评论 -
Linux 信号 模拟实现sleep
1、产生信号产生信号的3种方式:1、调用系统函数:kill(); raise(); abort(();2、软件异常行为;3、组合键:Ctrl+c Ctrl+d Ctrl+\等;处理信号的3种方式:1、忽略2、默认(很多情况下是终止)3、自定义(信号捕捉)信号在内核中的表示:1、递达:执行信号的处理动作称为信号递达(Delivery)2、未决:信号从产生到原创 2017-04-27 22:09:21 · 365 阅读 · 0 评论 -
linux多进程(fork)
1、服务器端代码#include#include#include#include#include#include#includeint startup(const char *_ip,int _port){ int sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0){ perror("socket"); exit(1原创 2017-06-02 22:17:51 · 301 阅读 · 0 评论 -
linux多线程
1、服务器代码#include#include#include#include#include#include#includeint startup(const char *_ip,int _port){ int sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0){ perror("socket"); exit(1)原创 2017-06-02 22:19:46 · 194 阅读 · 0 评论 -
linux线程池
线程池1、任务和线程池结构体#ifndef __THREADPOOL_H__#define __THREADPOOL_H__#include "condition.h"// 任务节点typedef struct task { void *(*run)(void *arg); // 回调函数 void *arg; // 回调函数的参数 struct task *ne原创 2017-06-02 22:43:37 · 223 阅读 · 0 评论 -
linux Udp 套接字
1、服务器代码#include#include#include#include#include#include#includeint startup(const char *_ip,int _port){ int sock = socket(AF_INET,SOCK_DGRAM,0); if(sock < 0) { perror("socket"); exit(1原创 2017-06-02 22:58:55 · 255 阅读 · 0 评论 -
dup2函数
dup/dup2 dup2和dup都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有原创 2017-06-07 16:45:38 · 788 阅读 · 0 评论 -
linux之浅谈crond和crontab
一、crond和crontab1、crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成Linux操作系统之后,默认便会启动Crond任务调用服务。Crond服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时服务就像我们的闹钟一样。2、c原创 2017-07-13 12:59:38 · 396 阅读 · 0 评论 -
linux之shell字符串截取
shell中截取字符串的方法${expression}一共有9种使用方法。${parameter:-word}${parameter:=word}${parameter:?word}${parameter:+word} 上面4种可以用来进行缺省值的替换。${#parameter}上面这种可以获得字符串的长度。 ${parameter%word} 最小限度从后面截取word${pa原创 2017-07-13 13:33:05 · 484 阅读 · 1 评论 -
linux之shell彩色进度条
shell中printf的彩色方案 颜色是通过添加专用序列来选择的 – 夹在 “\e[“和 “m”之间的数字。如果指定一个以上的数字,则用分号将它们分开。echo -e "\e[31;42m"使用”\e[0m”序列将颜色重新设置为正常值1、颜色分类\e[30m – \e[37m 设置前景色(字体颜色) echo -e “\e[30m” 灰色 echo -原创 2017-07-04 21:47:51 · 372 阅读 · 0 评论 -
I/O多路复用之poll
poll服务器的我简单实现#include#include#include#include#include#include#include#include#includeint startup(const char *_ip,int _port){ int sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0){ pe原创 2017-06-14 16:36:37 · 397 阅读 · 0 评论 -
I/O多路复用之epoll
epoll服务器的简单实现#include#include#include#include#include#include#include#includestatic void usage(const char *proc){ printf("usage:%s[local_ip][local_port],\n",proc);}typedef struct fd_bu原创 2017-06-14 16:38:02 · 239 阅读 · 0 评论 -
Linux下使用appimage打包程序
一、打包工具首先需要下载打包的工具,打包工具是以下两种:1.linuxdeployqt下载地址:https://github.com/probonopd/linuxdeployqt/releasesa.下载下图所标记的工具:b.配置linuxdeployqt,命令行输入以下指令:sudo mv linuxdeployqt-continuous-x86_64.AppIm...原创 2019-03-30 14:07:58 · 12346 阅读 · 10 评论
分享