分类: Linux

16 篇文章

Linux命令速查(自用版)
alias命令 功能:给命令自定义别名 语法:alias name = value 例子:alias pg='ps aux | grep'(那么下次想查看进程名为abc的信息直接输入pg abc即可) cat命令 功能:查看文件内容 语法:cat 参数 参数:被查看的文件路径 cd命令 功能:切换工作目录 语法:cd [目标目录] 参数:目标目录,…
Linux网络编程 Part5 libevent
概述 优点: 开源 精简 支持跨平台 专注于网络通信 源码包安装步骤:可参考具体README文件 ./configure检查安装环境,生成makefile make生成.o和可执行文件 sudo make install 将必要的资源拷贝至系统指定目录 进入sample目录,运行demo验证是否安装成功 编译使用库的.c时,需要加-levent选项…
Linux网络编程 Part4 高并发服务器之二
线程池并发服务器 为什么要引入线程池,不直接用之前的多线程并发? 因为多线程并发要频繁地对线程进行创建与销毁(一旦有客户端传来需求,就创建一个新线程,通信结束就立刻销毁该线程),这会占用大量的CPU时间并导致不必要的系统开销 相关结构体 线程池结构体:描述线程池相关信息 pthread_mutex_t lock; /* 用于锁住本结构体 */ pt…
Linux网络编程 Part2 Socket编程
预备知识 网络套接字socket 属于Linux特殊文件类型(管道、套接字、字符设备、块设备) 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现) 在通信过程中, 套接字一定是成对出现的 类比前面进程通信中的管道:一个管道掌控着两个文件描述符和一个缓冲区,而一个套接字掌控着一个文件描述符和两个缓冲区 ps:图中画的不恰当,数据流通…
Linux网络编程 Part1 网络基础
协议 协议:从应用角度讲,协议就是一组规则,用于数据的传输和解释 典型协议 应用层:HTTP、FTP、NFS、SSH、telnet 传输层:TCP、UDP 网络层:IP、ICMP、IGMP 链路层:以太网帧协议、ARP 网络应用程序设计模式 c/s模式: 客户端服务器端架构 client/server 优点: 可以缓存数据,提高传输效率 协议选择灵…
Linux系统编程 Part9(线程同步、信号量、条件变量)
线程同步 同步即协同步调,多个线程对公共区域数据按序访问,防止数据混乱,产生与时间有关的错误。 线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其他进程为保证数据一致性,不能调用该功能。 因此,当有多个控制流共同操作一个共享资源时,就需要同步 数据混乱原因 资源共享(独享资源则不会) 调度随机(意味着数据访问会出现竞争…
Linux系统编程 Part8(守护进程、线程)
进程组和会话 进程组是多个进程的集合,而会话是多个进程组的集合 每个进程都属于一个进程组,当父进程创建子进程的时候,默认子进程与父进程属于同一进程组 进程组ID = 第一个进程ID(组长进程) 可以使用kill -SIGKILL-进程组ID(负的)来将整个进程组内的进程全部杀死 只要进程组中有一个进程存在,进程组就存在,与组长进程是否终止无关 创建…
Linux系统编程 Part7(信号)
相关概念 信号是软件层面上的“中断”。一旦信号产生,无论程序执行到什么位置,必须立即(用户感觉是立即,其实是要等待一个从用户区进入内核区的契机,站在CPU的时间量级上具有延迟性)停止运行,转而去处理信号,等信号处理结束,再继续执行后续指令。 每个进程收到的所有信号,都是由内核发送并处理的 与信号相关的事件和状态 产生信号: 按键产生,如:ctrl+…
Linux系统编程 Part6(IPC、管道、共享存储映射)
IPC方法(Inter-Process Communication) Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核。在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提…