![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux c系统编程
austral_sep
这个作者很懒,什么都没留下…
展开
-
聊天室项目
目录聊天室项目服务器客户端 聊天室项目 "************************************************************ 欢迎来到聊天室 输入log登录 输入reg注册 输入sto对某人讲话 输入sta对大家讲话 输入che查看当前在线用户 输入hlp查看帮助 输入tra传输文件 超级用户命令: nos禁言, say解禁, out踢出在线用户 输出ext退出聊天室 "**************************************************原创 2020-06-15 12:14:22 · 170 阅读 · 0 评论 -
Linux UDP网络编程
目录UDP的通信流程服务端客户端通信实例 UDP的通信流程 服务端 socket-->bind-->recvfrom-->sendto-->close recvfrom(接收数据) 1、头文件: #include <sys/types.h> #include <sys/socket.h> 2、函数原型: ssize_t recvfrom(i...原创 2020-05-03 16:49:42 · 176 阅读 · 0 评论 -
Linux TCP网络编程
目录TCP服务器实现过程套接字socket函数绑定IP地址和端口号bind函数listen函数accept函数TCP客户端的实现过程connect函数 TCP服务器实现过程 创建套接字:socket函数 给套接字绑定IP地址和端口号:bind函数 将套接字文件描述符,从主动变为被动文件描述符(做监听准备):listen函数 主动描述符可以主动的向对方发送数据 被动描述符只能被动的等...原创 2020-04-23 11:32:25 · 182 阅读 · 0 评论 -
Linux多线程编程
目录多线程基本使用注意此线程与主进程之间的通信多线程实例 多线程 进程是资源管理的最小单位,线程是程序执行的最小单位。因此我们在程序中多用线程有利于节省运行的空间和时间,更好的支持SMP以及减小(进程/线程)上下文切换开销。 基本使用 //多线程所需的头文件: #include<pthread.h> //创建线程id: pthread_t id; //创建线程: int pthread...原创 2020-04-08 18:54:09 · 109 阅读 · 0 评论 -
Linux的进程
目录进程属性进程退出进程运行 进程属性 多任务 vs 单任务 (并发vs并行)(调度:抢占vs非抢占) 进程的特点:每个进程拥有独立的虚拟地址空间 4G(内核态:1G 用户态:3G(栈,堆,数据段(bss、or、静态数据区))) 进程pid:每个进程创建都有自己的id号 getpid getppid(获得父进程的id) 进程控制块(PCB):每个进程创建都会有自己进程控制块(struct tas...原创 2020-04-08 18:21:09 · 91 阅读 · 0 评论 -
IPC进程间通信(六)--信号(signal)
目录信号 信号 信号的处理有三种方法,分别是:忽略、捕捉和默认动作 简单使用: sighandler_t signal(int signum, sighandler_t handler); signal函数 作用1:站在应用程序的角度,注册一个信号处理函数 作用2:忽略信号,设置信号默认处理 信号的安装和回复 参数 –signal是一个带signum和handler两个参数的函数,准备捕捉或屏蔽...原创 2020-04-08 18:07:26 · 297 阅读 · 0 评论 -
IPC进程间通信(五)--共享内存
目录共享内存 共享内存 在内存中申请一块共享区域,进程就可以通过访问这块共同区域实现数据的读和写进而实现通信。 //共享内存的创建: int shmget(key_t key, size_t size, int shmflg);//成功返回shmid;失败返回-1; //shmflg: 0644 | IPC_CREAT | IPC_EXCL //连接进程: void *shmat(int shm...原创 2020-04-08 16:52:46 · 72 阅读 · 0 评论 -
IPC进程间通信(四)--信号量
目录信号量 信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域 //信号量的建立 int semget(key_t key, int num_sems, int sem_flags);//成功返回sem_id; 失败返回-1; //key:ftok或IPC_PRIVATE常量 //n...原创 2020-04-08 16:28:14 · 133 阅读 · 0 评论 -
IPC进程间通信(三)--消息队列
目录消息队列 消息队列 消息队列提供了从一个进程向另一个进程发送一个又类型数据块的方法。用这种方法可以避免命令管道的同步和阻塞问题。此外消息队列是基于消息的,而管道是基于字节流的,并且消息队列的读取不一定是先入先出。 int msgget(key_t key, int msgflg); //失败返回-1;成功返回msqid //key:ftok生成或为IPC_PRIVATE //misfig:IP...原创 2020-04-08 16:09:15 · 143 阅读 · 0 评论 -
IPC进程间通信(二)--ftok
目录ftok ftok ftok主要运用于IPC的信号量,消息队列和共享内存。 ftok把一个已知道的路径名和一个整数标识符转换成一个key_t值,又被称为IPC键值。 #include<>sys/types.h> #include<sys/ipc.h> key_t ftok(const char *pathname, int proj_id) //pathname:...原创 2020-04-08 14:28:07 · 125 阅读 · 0 评论 -
IPC进程间通信(一)--管道
目录导论管道无名管道有名管道 导论 IPC(Inter-Process Communication):管道、信号、共享内存、消息队列、信息量、套接字 管道 管道分为:无名(匿名)管道和有名(命名)管道 区别: 管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。 命名管道是一种特...原创 2020-04-07 23:24:33 · 125 阅读 · 0 评论 -
多任务和fork()
多任务 单任务 vs 多任务 并发(单个CPU) vs 并行(多个CPU) 进程 进程的特点:每个进程都有自己独立的虚拟地址空间,大小为4G(互不干扰,相互独立) 进程虚拟地址空间的构成: 栈空间:先进后出;系统管理;生命周期由所在函数决定;生命周期:局部 堆空间:先进先出;用户管理(malloc,free);用户决定;生命周期:局部或全局 数据段:系统管理;生命周期:全...原创 2020-03-19 15:49:00 · 101 阅读 · 0 评论 -
获取文件信息 stat fstat
表头文件: 1 #include <sys/stat.h> 2 #include <unistd.h> 定义函数: 1 int stat(const char *file_name, struct stat *buf); 函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中 返回值: 执行成功则返回0,失败...原创 2020-03-13 17:43:22 · 77 阅读 · 0 评论 -
文件描述符
dup dup2 头文件: 1 #include<unistd.h> 调用: 1 int dup(int oldfd); 2 int dup2(int oldfd, int newfd); 作用: 1、两个均为复制一个现存的文件的描述 2、两个函数的返回:若成功为新的文件描述,若出错为-1; 3、由dup返回的新文件描述符一定是当前可用文件描述中的最小数...原创 2020-03-13 17:42:04 · 248 阅读 · 0 评论 -
映射mmap()
mmap, 从函数名就可以看出来这是 memory map, 即地址的映射, 是一种内存映射文件的方法。(其他的还有 mmap() 系统调用,Posix 共享内存,以及系统 V 共享内存) 原因:使用 mmap 方式获取磁盘上的文件信息,只需要将磁盘上的数据拷贝至那块共享内存(内核空间和用户空间共享)中去,用户进程可以直接获取到信息,而相对于传统的 write/read IO 系统调用,必须先把数...原创 2020-03-13 17:35:26 · 111 阅读 · 0 评论 -
Linux c系统编程(一)概述
概述: 1、Linux c系统编程有叫嵌入式网络编程(主要涉及:文件,进程,进程间通信,多线程,网络,大并发网络服务器,数据库,shell编程等) 2、Linux操作系统的组成:用户空间,内核空间。(原因:分成两个空间以保护内核不被用户轻易访问) 3、用户空间如何访问内核空间? (系统调用,硬件中断,软件中断) 4、系统调用:用户通过调用操作系统提供的函数(API)来访问内核的数据或者获取服务; ...原创 2020-03-03 16:26:50 · 268 阅读 · 0 评论