Linux系统编程
adlatereturn
自己竟然不存在
展开
-
linux 定时器(c++)(2)时间轮
节点类相比较时间升序链表中的绝对时间expiretw_timer采用的是相对时间的概念也就多出rotation ,time_slot俩属性,rotation是转的“圈数”,time_slot是转到时间轮的哪一块区域。好比现在在1:05,过了65分钟时针走了闹钟的1rotation并走到10 time_slot;tw_timer.h//// Created by adl on 2020/7/22.//#ifndef TEST2_TW_TIMER_H#define TEST2_TW_TIME原创 2020-07-26 13:23:50 · 465 阅读 · 0 评论 -
linux 定时器(c++)时间升序链表
刚好前两天学长给我们讲座中提到服务器客户的超时处理,刚好又在看《高性能linx服务器编程》有发现这方面的知识,就拿出来总结一下。第一,我们为什么需要自制计时器,c++ /c 的alarm不是可以实现定时操作吗,还有sleep…???linux下一个进程共享一个alarm闹钟定时器,然而服务器肯定是多用户的,我们肯定得想方法给每个客户整一个定时器升序时间链表util_timer类代表着每一个节点,利用time()存储绝对时间,client_data是用户的数据util_timer.h//// C原创 2020-07-25 23:02:19 · 463 阅读 · 0 评论 -
俄罗斯方块c++linux版本
主程序RussiaBlock.cpp//// Created by adl on 2020/7/18.//#include "Block.h"#include "Table.h"#include <thread>#include <mutex>#include "hierarchical_mutex.h"#include "fstream"using namespace std;thread_local uint64_t hierarchic原创 2020-07-19 15:01:45 · 309 阅读 · 1 评论 -
my_shell实现和分析
上个月初的myshell实现让人大费脑筋,在字符串处理和多重管道上出了不少差错,但好在最后还是实现了要求的功能。真的太懒了,把博客拖到现在~需求一个一个分析吧实现管道 |这个的意思就是想要你把一个命令的输出当作输入交给后面一个命令。如ls -l | grep “a” |wc -c就是把ls -l的输出结果交给grep 处理,grep的处理结果交给wc处理。解决方案:dup2(fd,0)重定...原创 2020-05-10 23:39:21 · 868 阅读 · 0 评论 -
c语言版本线程池学习和分析
线程池,在我看来就是一个 线程链表,接着我们通过任务链表(其实应该是队列)在上面分配一些任务函数。在实际应用中,线程池可以和网络服务器等高并发的程序结合起来实现异步操作。以下代码学习自线程池核心结构typedef struct my_pthread_t{ pthread_t *_pthread; //线程号 bool state; //是否已经进入等待状态}m...原创 2020-04-28 00:43:21 · 237 阅读 · 0 评论 -
子进程可以复制父进程的缓冲区吗?
在阅读《UNIX 高级环境编程》进程控制那块,有个例子是差不多这样的:在子进程中改变变量,观察父进程之后变量的变化#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include...原创 2020-04-22 21:03:36 · 410 阅读 · 0 评论 -
UNIX学习笔记(1)
应该之后开始每天记录一点,不然这些笔记过段时间都不知道放哪了。fork 和vfork 的区别在于vfork子进程共享父进程地址空间,子进程先执行,这意味着变量是共享的,子进程一边改变,父进程的变量的值也会受到影响。俩进程在写同一个文件如果使用open(O_APPEND),write的系统调用的时候,父进程和子进程的调用次序不一定,写入文件中是交替的(但不会覆盖),如果使用的是fopen(“a...原创 2020-04-17 19:22:54 · 158 阅读 · 0 评论 -
linux下c语言用execl使用vim 打开一个文件,出现了神奇的读错误的解答
我认为使用execl函数可以去使用vim。但是却出现了神奇的读错误,整个终端崩了。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<fcntl.h>#include<unistd.h>int main(){ pid_t pid; ...原创 2020-04-11 15:03:11 · 364 阅读 · 1 评论 -
linux下可以帮你把头文件和main函数写好的mytouch
来写个丑丑的c和c++混合的 mytouch有的时候我们想要执行touch自动帮我们生成一个c文件包含我们想要的头文件,但是我们会发现linux下touch出的文件都是空的。当时看到苹果系统下打开一个空的c文件就会给你自动写好 如下形式的c初始程序。#include<stdio.h>int main(int argc,char**argv){ return 0;}那我们...原创 2020-04-03 23:25:30 · 281 阅读 · 1 评论 -
linux网络编程学习epoll模型分析(最简单那种哦!!!)
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <str...原创 2020-03-25 21:50:17 · 153 阅读 · 0 评论 -
阻塞非阻塞,同步异步比较好的解释(摘自知乎)
https://www.zhihu.com/question/19732473转载 2020-03-21 18:28:05 · 199 阅读 · 0 评论 -
linux下如何把一个自己写的命令(如ls)在任意文件夹下执行
我们需要把这个可执行文件所在目录加入PATH环境变量中。1sudo vim/etc/profile 加入一行:export PATH=$PATH:/脚本目录/再记得source 加载一下profile用这种有一点点小问题:命令行的东西的颜色全消失了2sudo vim /etc/environment ,将目录加到PATH后面。我使用了这种再记得source 加载一下profi...原创 2020-03-14 17:40:16 · 1399 阅读 · 0 评论 -
Linux下消费者生产者模型的信号量版本和条件变量版本
无论是哪种版本都是为了实现线程间的同步,以锁机制管理共享变量。可以把规则当作:1。一个包子不可以两个人吃。1。一个客户吃到包子的必要条件是等待包子铺生产包子或者拿走包子铺已经生产的包子,包子铺生产包子的必要条件是有人来吃。条件变量版本#include <stdio.h>#include <stdlib.h>#include <unistd.h>#in...原创 2020-03-07 23:34:51 · 152 阅读 · 0 评论