
Linux-C++
文章平均质量分 66
划船不靠桨2022
这个作者很懒,什么都没留下…
展开
-
Linux System V 信号量
linux 线程处理问题int semget(key_t key,int nsems,int flag);int semop(int semid,struct sembuf *sops,size_t nops);int semctl(int semid, int semnum, int cmd, …);struct sembuf{ short sem_num; //操作信号在信号集原创 2015-04-24 11:27:15 · 553 阅读 · 0 评论 -
Linux 多线程聊天服务器
多线程实现QQ群聊天功能(1)Socket 实现建立网络连接和通讯功能#include <iostream>#include <netinet/in.h>#include <sys/socket.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/epoll.h>#include <time.h原创 2015-04-28 11:20:40 · 1374 阅读 · 0 评论 -
二叉树的前驱和后继
前提二叉树的几何结构和遍历路径,是查找前驱和后继的基础。结点分类几何结构千变万化,但单个结点必然和至多3点邻接:左(或右)父,左子和右子。按照“X”型助记,交叉点为研究对象。为求结点N的前驱结点Pre和后继结点Suc,设N的左子lchild,右子rchildm,N的左父亲lparent,右父亲rparent; 先后顺序同一几何结构,不同的遍历方式得到不同的遍历路径;具体到单个结点,也就有不同的前驱原创 2015-05-03 08:56:29 · 28676 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历遍历概念所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方案遍历方案 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: (1)访问结点本身原创 2015-05-03 09:44:39 · 623 阅读 · 0 评论 -
二叉树的中序遍历线索化
二叉树的线索化@(Linux C/C++)[线索二叉树,中序遍历,]理论基础在二叉树的二叉链表表示实现的时候,当以二叉树作为存储结构时,只能找到节点的左右孩子信息,不能直接得到结点在任一序列中的前驱和后继信息,只有在遍历过程中才能得到这种信息。我们知道,在n个结点的二叉链表栈必定存在n+1个空链域,因此,可以利用这些空链域来存放这些结点信息。所以作如下规定:若结点右左子树,则其lchild域指向其左原创 2015-05-03 09:02:26 · 4720 阅读 · 0 评论 -
Linux 多线程目录遍历
目录遍历函数#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>char *getcwd(char *buf, size_t size);//获取当前目录的绝对路径DIR *opendir(const char *name); //获取一个路径的目录流DIRDIR *fdopendir(int fd);原创 2015-04-27 13:50:57 · 2041 阅读 · 0 评论 -
POSIX信号量解决经典同步问题
posix信号量信号量简介POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分。在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V信号量的系统接口。信号量作为进程间同步的工具是很常用的一种同步IPC类型。信号量是一种用于不同进程间进行同步的工具,当然对于进程安全的对于线程也肯定是安全的,所以信号量也理原创 2015-04-25 13:30:54 · 861 阅读 · 0 评论 -
epoll I/O 多路复用
select I/O 复用的缺陷(1)每次调用select函数后要针对所有的文件描述符循环遍历, 代码如下:result=select(fd_max+1,&temp_set,NULL,NULL,&timeout);for(int index=0;index!=fd_max+1;index++){ if(FD_ISSET(index,&temp_set)) { i原创 2015-04-24 17:41:09 · 516 阅读 · 0 评论 -
select I/O 多路复用实现服务器聊天室功能
基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器即原创 2015-04-25 13:48:10 · 2616 阅读 · 0 评论 -
内存映射和文件操作函数
内存映射 mmap的函数定义: void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);函数参数详细解 参数fd为即将映射到进程空间的文件描述字,一般由open()返回,同时,fd可以指定为-1,此时须指定flags参数中的MAP_ANON,表明进行的是匿名映射(不涉及具体的文件名,避免了文件原创 2015-04-25 13:35:31 · 752 阅读 · 0 评论 -
智能指针和引用计数以及String的C++实现
内存空间的开辟#include<iostream>#include<cstdio>#include<cstdlib>int main(int argc,char** argv){ int m=5,n=6; int **a= new int* [m]();//C++手法开辟 for(int index=0;index!=m;index++) {原创 2015-04-26 08:55:55 · 1329 阅读 · 0 评论 -
信号处理
信号集合SIGINT 2 Term Interrupt from keyboardSIGQUIT 3 Core Quit from keyboardSIGILL 4 Core Illegal InstructionSIGABRT 6 Core Abort signal from abort(3)SIGFPE 8 Core Floati原创 2015-04-24 16:59:46 · 521 阅读 · 0 评论 -
僵尸进程的处理
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程。两种方法杀死僵尸进程,一般僵尸进程很难直接kill掉,不过您原创 2015-04-24 13:18:11 · 665 阅读 · 0 评论 -
文本纠错项目一些问题
线程启动问题thread thread_run头文件namespace THREAD{ class CThread_RUN { public: virtual void run()=0; virtual void set_cache(hash_record* m_cache)=0; virt原创 2015-04-30 16:09:17 · 1791 阅读 · 0 评论