Linux 基础
GOGP_nikto
这个作者很懒,什么都没留下…
展开
-
TCP和多线程实现在线聊天室
github链接:https://github.com/jiezhilongchuan/-原创 2020-09-08 19:48:03 · 214 阅读 · 0 评论 -
Linux基础:UDP通信讲解和实现案例
UDP网络通信:实现案例:https://blog.csdn.net/qq_43038236/article/details/108351271UDP是无连接的通信协议,准备好地址之后可以直接发送或接收数据。ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);功能:发送数据sockfd:发送者的socket描述符原创 2020-09-01 21:39:47 · 375 阅读 · 1 评论 -
Linux基础:UDP通信简单实现案例
效果图服务器端#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<sys/types.h>#include<netinet/in.h>#include<arpa/inet.h>//服务端int main(int argc,const ch原创 2020-09-01 21:38:27 · 288 阅读 · 0 评论 -
Linux基础:IO复用select和expoll讲解
多路复用:select和expoll实现案例:https://blog.csdn.net/qq_43038236/article/details/108350851由于为了实现服务器的并发(同时服务多个客户端),需要为每个客户端创建一个进程来为它服务,但创建进程、销毁进程非常浪费时间与资源,这个问题有两种解决方案:1、多路复用:一个进程监控所有的客户端fd+服务端fd。2、多线程:为每个客户端创建一个线程进行服务。由于有些读写函数需要以阻塞状态调用,同时可能有多个文件描述需要同时读写,多路复用就是原创 2020-09-01 21:23:14 · 524 阅读 · 0 评论 -
Linux基础:select和expoll服务器简单实现案例
SELECT效果图#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<sys/select.h>//服务器int main(int argc,const原创 2020-09-01 21:17:22 · 347 阅读 · 0 评论 -
Linux网络编程:SOCKET通信讲解和案例
一、套接字SOCKET通信案例:https://blog.csdn.net/qq_43038236/article/details/108350394基本特点:socket是一种接口技术,被抽象成一个文件操作,可以让进程之间通信,也可以让不同计算机的进程通信(网络)。函数1、int socket(int domain, int type, int protocol);功能:创建套接字domain:AF_UNIX/AF_LOCAL 本地通信,进程间通信AF_INET 基于IPv4地址通信AF原创 2020-09-01 20:58:12 · 379 阅读 · 0 评论 -
Linux网络编程案例:SOCKET本地通信和网络通信
本地进程通信效果图:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/un.h>#include<sys/socket.h>#define Backlog 5//服务器int main(int argc,const char** argv)原创 2020-09-01 20:52:49 · 512 阅读 · 0 评论 -
Linux基础:进程讲解,fork()函数的使用
进程基本概念:1、进程与程序程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。2、进程的分类进程一般分为三种类型:交互进程、批处理进程、守护进程。守护进程一般都处于活跃状态,运行在后台,由于系统在开机时通过启动脚本自动创建的。3、查看进程简单形式:ps 显示当前用户有控制终端的进程信息。列表形式:ps -auxw 显示进程详细信息 a 所有用户的有控制终端的进程 x 无终端原创 2020-08-25 21:01:52 · 391 阅读 · 1 评论 -
Linux基础:基本信号函数的使用signal等
基本概念1、中断当程序接收消息后中止当前正在执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫中断,分为硬件中断和软件中断。2、信号是一种软件中断,由操作系统发出,程序接收后会执行相应的操作。3、常见信号kill -l 显示所有信号SIGINT Ctrl+c 终止SIGQUIT Ctrl+\ 终止+coreSIGFPE 除0 终止+coreSIGSEGV 非常内存访问 终止+coreSIGKILL 终止信号 终止原创 2020-08-25 20:52:19 · 520 阅读 · 0 评论 -
Linux基础:文件与目录相关函数:sync,stat,truncate,closedir,readdir等
文件同步:1、在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率。2、但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘。void sync(void);功能:把缓冲区中的数据同步到磁盘注意:并不等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列。int fsync(int fd);功能:把指定文件的内容从缓冲区同步到磁盘注意:会等到完全定稿磁盘才返回int fdatasync原创 2020-08-25 20:40:30 · 241 阅读 · 0 评论 -
Linux基础:31个软中断信号表
原创 2020-08-25 20:31:39 · 396 阅读 · 0 评论 -
Linux基础:模拟ls -l命令的实现(环境ubutun)
#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <time.h>#include <pwd.h>#include <grp.h>void file_type(mode_t mode原创 2020-08-25 20:21:07 · 181 阅读 · 0 评论 -
Linux基础:文件系统相关接口open,read,creat,write ,dup,dup2的使用
系统调用:系统调用就是操作系统提供的一些功能供程序员们调用,这些调用已经被封装成了C函数的形式,但是它们不是标准C的一部分。一般应用程序运行在用户态(使用的是0~3G的内存),系统调用工作在内存态(使用的是3~4G的内存)。常用的标准库函数大部分时间运行在用户态,底层偶尔也会调用系统调用进入内核态。系统调用的代码是内核的一部分,其外部接口以函数定义共享库中(linux-gate.so,ld-linux.so),这些接口的实现利用软中断进入内核态执行真正的系统调用。time a.out 测试原创 2020-08-25 20:18:27 · 659 阅读 · 0 评论 -
Linux基础:内存管理
一、内存管理用户层 STL 自动分配/释放内存 调用C++ C++ new/delete 调用C C malloc/free 调用POSIX POSIX brk/sbrk 调用Linux Linux mmap/munmap 调用内核 系统层 kernal kmalloc/vmalloc 调用驱动 driver get_free_page 驱动获得空闲的页原创 2020-08-21 19:56:08 · 160 阅读 · 0 评论 -
Linux基础:静态库和共享库
库:概念: 库文件就是目标文件的集合,可以被其它代码调用,把代码封装成库文件后方便使用、方便管理、安全性高、保密性强。静态库就是目标文件的集合,调用静态库就是把静态库中的二进制指令拷贝到可执行文件中。优点:运行速度比共享库快。缺点:可执行文件相对较大,当静态库修改后,可执行文件要重新编译。共享库:就是没入口的可以执行文件,调用共享库就是记录共享中二进制指针的位置即可。当执行可执行文件时共享库会被一起加载到内存,可执行文件中可以跳转到共享库中执行。优点:可执行文件相对较小,当共享库修改后,可执行文原创 2020-08-21 19:53:02 · 205 阅读 · 0 评论 -
Linux基础:GNU编译工具
GNU编译工具:多样化支持各种编程语言,支持各种操作系统。gcc -v 查看版信息构建过程:预处理:gcc -E code.c -o code.i编译:gcc -S code.i -> code.s汇编:gcc -c code.s -> code.o链接:gcc a.o b.o c.o … a.out文件类型:.h 头文件.h.gch 头文件的编译结果,会被优先使用.i 预处理文件.c 源文件.s 汇编文件.o 目标文件.a 静态库文件.so 共享库文件编译参原创 2020-08-20 22:17:01 · 382 阅读 · 1 评论 -
Linux 基础(三)常用命令 (ls、touch、more|cat|tail|head )
一、ls功能:用于查看当前目录下的文件ls -a :显示隐藏文件,在linux下隐藏文件都是以 “.“ 开头的 例如:.abcls -l :显示文件的详细信息内容:1、文件属性字段 :第一个字符表示文件的类型:-:普通文件d:目录文件b:块设备文件c:字符设备文件l:符号链接文件第一组的三个字符是授权文件所有者的权限第二组字符是授权同组用户的权限第三组字符是授权其他用户的权限每一组三个字符一次表示读写执行三个权限r:表示有读权限x:表示有执行权限w:表示写权限‘-’:表原创 2020-07-26 20:49:31 · 372 阅读 · 0 评论 -
Linux基础(二)目录相关的命令 (创建,移动,删除和复制)
文件的创建命令mkdir格式 :madir (-参数) 目录名 创建目录的位置mkdir test //当前目录下创建test文件夹mkdir /root/test/test1 //在/root/test下创建test1文件夹参数: - p 用于创建多级目录的子目录,如果前级目录不存在就一并创建了...原创 2020-07-22 10:47:53 · 557 阅读 · 0 评论