Linux
文章平均质量分 54
出走刺猬
这个作者很懒,什么都没留下…
展开
-
Linux---粘滞位
作用: 在目录上设置粘滞位,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。 实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。设置粘滞位的原因: 1.切换至root用户,在code目录下创建tmp目录并将权限设置为777 . 2. 在t原创 2017-04-16 17:12:27 · 456 阅读 · 0 评论 -
dup/dup2实现客户端
1.dup/dup2介绍 man dup后: 作用:进行文件描述符重定向;①dup将oldfd复制给一个新的描述符,这个新文件描述符指向oldfd拥有的文件表项,dup函数返回新文件描述符; ②dup2与dup的作用相似,只是它用newfd参数指定新的文件描述符,即newfd是oldfd的一份拷贝; 2.使用dup/dup2实现客户端 #include<stdio.h>#include原创 2017-06-30 16:10:59 · 499 阅读 · 0 评论 -
多进程、多线程服务器程序
版本一:客户端和服务器端可以进行通信,但是只能有一个客户端。1.服务器端程序tcp_server.c#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>static原创 2017-06-21 16:45:43 · 495 阅读 · 0 评论 -
Linux I/O多路转接----poll模型
1.poll模型属于I/O多路转接模型,是对select模型的一种优化; int poll(struct pollfd *fds,nfd_t nfds,int timeout);2.poll的优点: ①poll使用数组存储文件描述符,所以能描述的文件描述个数在理论上没有上限; ②poll将输入输出型参数进行了分离,因此使用时不需要重新设置; ③不要求计原创 2017-06-22 16:58:29 · 405 阅读 · 0 评论 -
Linux进程池、线程池调研
1.进程池 (1)进程池是由服务器预先创建的一组子进程,这些子进程的数目在3-10个之间。进程池中的所有子进程都运行着相同的代码,并具有相同的属性,比如优先级,PGID等等。因为进程池在服务器启动之初就创建好了,所以他们没有打开不必要的文件描述符(从父进程继承而来),也不会错误地使用大块的堆内存(从父进程复制得到)。 (2) 当有新的任务到来时,主进程将通过某种方式选择进程池中的某一个原创 2017-06-23 16:40:05 · 460 阅读 · 0 评论 -
子进程的异步等待方式
一.SIGCHLD SIGCHLD信号:当子进程退出时,它会向父进程发送SIGCHLD信号,该信号的默认处理方式为忽略,当父进程以阻塞方式等待时,它不能处理自己的工作。 我们自定义一个捕捉信号的函数catchsig。代码如下:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>voi原创 2017-06-13 16:24:29 · 274 阅读 · 0 评论 -
正则表达式及grep、sed、awk、cut、sort、uniq工具
1.正则表达式 (1)定义:规定一些特殊语法用来对字符串进行模糊匹配; (2)特点: ①灵活性、逻辑性和功能性较强; ②可以迅速地用简单的方式匹配字符串; (3)使用事项:当正则表达式作为命令参数时,要用单引号括起来,因为正则表达式中的某些字符在shell中有特殊意义,如转义字符\,括起来后把原封不动地传递给命令。 2.字符的分类 (1)字符类原创 2017-07-04 23:00:00 · 816 阅读 · 0 评论 -
crond和crontab调研
1.crond crond在linux下是一个定时执行工具,可以在无需人工干预的情况下定时地运行任务; crond文件位于/etc/rc.d/init.d/crond 要设置这个服务在系统启动的时候自动启动,在/etc/rc.d/rc.local这个脚本的末尾加上: /sbin/service crond start 要查看linux是否已经安装crond,使用命令:rpm -原创 2017-07-05 11:53:51 · 495 阅读 · 0 评论 -
shell字符串截取
一、按指定字符串截取 方法一:1.# 从左向右截取该字符串第一次出现后的字符串 2. ## 从左向右截取该字符串最后一次出现后的字符串 3. % 从右向左截取该字符串第一次出现后的字符串 4. %% 从右向左截取该字符串最后一次出现后的字符串 方法二:5. 从左边第n个字符后开始到指定个数结束 6. 从左边第n个字符后开始直到结束 7. 从右边第n个字符开始直到指定个数结束 8原创 2017-07-05 17:14:05 · 1530 阅读 · 0 评论 -
shell---反引号,$( )以及eval的比较
1.反引号“ 和$( )的相同点: 反引号是将“中的命令执行,再将执行结果替换到代码所在地,交给外层显示,即将命令的结果作为输入或输出。 $( )和反引号都是用于命令的替换编写一个脚本,显示出HOME目录: 执行结果,与预期相同: 2.反引号“ 和$( )的区别: 对于很多命令,虽然反引号和$( )的的输出结果相同,但是有一个字符却可以区别它们,那就是转义字符\原创 2017-06-26 16:20:16 · 475 阅读 · 0 评论 -
Linux--守护进程(精灵进程)
守护进程(daemon) 了解守护进程必须要先了解进程组、作业、会话,这三个概念已经在上一篇blog中介绍过了。1.定义 守护进程独立于控制端并周期性地执行某种任务或等待处理发生的某些事件 ;2.特点: ①守护进程的命名都是以d结尾; ②守护进程不受用户登录和注销的影响,当会话终止时,后台登录和注销受到影响,但不影响守护进程; ③守护进程的PPID即父进程都为原创 2017-06-15 12:45:55 · 430 阅读 · 0 评论 -
进程组-作业-会话
一、进程组(PGID) 1.进程组是一个或多个进程的集合,它们与同一作业相关联,可以接收来自同一中端的各种信号; 2.每个进程都属于一个进程组; 3.多个毫不相关的进程可能共同协作完成同一个作业; 4.组长进程:每个进程组有一个组长进程,它是该组的第一个进程,组长进程的ID等于进程组的ID; 5.一个进程组中,只要有一个进程存在,这个进程组就存在,它与组长没有关系,只是用原创 2017-06-15 00:31:51 · 312 阅读 · 0 评论 -
可重入函数与线程安全
一.可重入函数 1.定义: 可重入函数:可以被两个或多个执行流进入的函数,并且产生的结果是正确的,可以在函数执行的任何时候中断它,它主要用于多任务环境中。 不可重入函数:因为重入而导致错误的函数称为不可重入函数。 2.不可重入函数: (1)函数内使用了静态数据结构; (2)函数内调用了malloc(),free(); (3)函数内部调用了标准输入,标准输出; 3.编写可重原创 2017-06-14 16:30:33 · 241 阅读 · 0 评论 -
信号Signal
1.信号的定义 操作系统向目标进程发送通知的过程。2.信号的相关概念 ①操作系统是进程的管理者,它会向进程发送信号; ②发送信号即修改目标进程PCB中的信号字段; ③进程的PCB中会有信号的信息,当进程看到这些信息时,就知道自己收到信号了; ④进程受到信号后,它知道如何处理,但不会立即处理,而是在合适的时间处理它; ⑤信号由编号和名称组成,发送信原创 2017-06-15 16:52:59 · 425 阅读 · 0 评论 -
select服务器
1.select简单介绍 ①select:一次用来等待多个文件描述符,只负责等待 ②select函数: int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout) ③参数介绍: 第一个参数nfds表示最大的文件描述符+1 fd_set是文件描述原创 2017-06-30 15:37:12 · 361 阅读 · 0 评论 -
shell程序练习
1.计算1~100相加之和,并用1+2+3+…+100=?的形式打印出来 结果如图: 还可以使用工具计算1~100的和: 2.打印出命令行参数中的最大值,最小值,平均值,而且平均值保留两位小数 : 结果如图所示: 3.根据标准输入打印斐波拉契数列中的对应数字:方法①:使用迭代器 方法②:使用数组 方法③:使用递归 三种方法的结果如图所示: 4.有一个f原创 2017-06-30 09:24:35 · 398 阅读 · 0 评论 -
Linux---find命令及使用
功能: 在目录中查找文件并进行指定操作命令格式: find pathname -options [-print -exec -ok …] find 路径 选项 参数命令参数: -print: find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令原创 2017-04-16 15:56:12 · 397 阅读 · 0 评论 -
Linux简单命令及权限管理
Linux操作系统是一款与windows操作系统完全不同的操作系统,它的大部分操作都是通过输入命令行来完成的,也是大多数公司使用的一款操作系统。 Linux下一切皆文件思想。1.Linux中的文件类型分为: 1.普通文件:第一个字符为-; 2.目录文件:第一个字符为d; 3.链接文件:第一个字符为l,又分为软连接和硬链接; 4.设备和块设备:原创 2017-03-02 16:18:07 · 334 阅读 · 0 评论 -
进度条的实现
#include <stdio.h>#include <unistd.h>int main(){ char bar[52] = {'\0'}; char ch[] = {'|', '/', '-', '\\'}; printf("\033[?25l\033[47m"); printf("%58s\r",""); f原创 2017-04-13 23:47:57 · 319 阅读 · 0 评论 -
文件指针FILE*及文件描述符fd
文件指针 在C语言中,通过文件指针可以对文件进行相应的操作,定义说明文件指针的一般形式为:FILE *指针变量标识符。 FILE实际是由系统定义的一个结构体,它包含的字段有文件描述符和缓冲区等。 通常程序运行后会打开:stdin--文件输入流,stdout--文件输出流,stderr--文件错误流,它们对应了键盘、显示器、显示器,它们的类型都为FILE*。 由于fwrite,prin原创 2017-05-07 17:12:07 · 2126 阅读 · 0 评论 -
进程间通信---管道
1.进程间通信(IPC): 把数据从用户空间拷到内核缓冲区,另一个进程再从内核缓冲区将数据读走,这种由内核提供的机制叫做进程间通信。2.管道 管道是一种最基本IPC机制,由pipe函数创建3.创建管道的函数pipe( ) int pipe( pipefd[2] ); ①函数调用成功时返回0,失败返回-1 ②函数分别以读方式和写方式打开一个文件,使用3,4作为文件描述原创 2017-06-15 23:52:41 · 209 阅读 · 0 评论 -
CRC循环冗余校验码
1、CRC CRC循环冗余校验码是数据通信中的一种查错校验码。 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性。 2.模2除法 ①不向上借位,只要除数和被除数的位数相同就可进行计算,不比较它们的大小; ②模2运算中用到了模2减法,与逻辑异或相似: 1-1=0, 1-0=1, 0-1原创 2017-06-16 17:18:05 · 11073 阅读 · 2 评论 -
NAT技术调研
本博客中5.NAT原理中所有内容引用自: http://www.cnblogs.com/derrick/p/4052401.html?utm_source=tuicool&utm_medium=referral#undefinedNAT技术1.定义 NAT为网络地址转换,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。 所有使用本地地址的主机在和外界通信时,都要在原创 2017-06-18 10:11:15 · 422 阅读 · 0 评论 -
代理服务器调研
1.名词解释: 代理服务器是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接国际互联网和局域网。2.相关概念 (1)代理也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保原创 2017-06-18 10:22:57 · 1501 阅读 · 0 评论 -
路由生成算法调研
1.路由 路由(名词):数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。 路由(动词):从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。 2.路由表 路由表是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径,路由表中含有网络周边的拓扑信息。建立路由表的主要是为了实现路由协议和静态路由选择原创 2017-06-18 10:57:01 · 405 阅读 · 0 评论 -
ARP协议
1.ARP协议 ARP,地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议;2.工作过程 当数据包进行转发时,源主机不知道不知道目的主机的物理地址,会首先查一下自己的ARP高速缓存表,如果查询的IP-MAC值不存在,那么主机就向网络广播一个ARP请求包,这个包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合原创 2017-06-18 12:42:15 · 480 阅读 · 0 评论 -
Linux线程
1.定义 线程是在进程内部运行的一个执行分支,即线程是在进程的地址空间运行,执行进程的一个分支。2.Linux下的线程 Linux下没有真正意义的线程,是使用进程模拟的,在Linux下,线程叫做轻量级进程,使用task_struct结构体描述,而Windows下存在线程TCB。3.线程与进程的区别 ①进程强调资源独占,线程强调资源共享; ②进程是承担系统资源分配的一个实体,原创 2017-06-18 15:05:26 · 1074 阅读 · 0 评论 -
线程死锁调研
1.定义 死锁:是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外部处理作用,它们都将无限等待下去。2.死锁产生的原因: ①系统资源不足; ②进程(线程)推进的顺序不恰当; ③资源分配不当;3.线程死锁产生的必要条件: (1)互斥条件:一个资源每次只能被一个进程使用; (2)请求与保持条件:一个进程因请求资源而阻塞时,对已原创 2017-06-18 15:44:34 · 286 阅读 · 0 评论 -
shell语法及实现进度条
使用shell实现一个进度条: 效果如图所示:原创 2017-06-28 16:24:09 · 1134 阅读 · 0 评论 -
阻塞信号及信号屏蔽pending
1.信号在内核中的三种表示 (1)信号递达:实际执行信号的处理动作; (2)信号未决(pending):信号从产生到递达的状态,是一种记录状态; (3)阻塞信号(block):被阻塞的信号不会递达,它在产生时处于未决状态,直到进程解除对这个信号的阻塞,才会执行递达,但不会立即递达; 阻塞与忽略的不同:忽略是在信号递达后的处理动作,而被阻塞的信号是不会递达的;2.信原创 2017-06-15 18:52:51 · 885 阅读 · 0 评论