03 2019 档案

摘要:任务: 实现一个TCP server的回声服务器,功能是将客户端发送的消息原样返回,应用epoll处理事件循环实现IO多路复用。借此任务理解IO多路复用应用的开发模式。 参考资料: http://man7.org/linux/man-pages/man2/epoll_create1.2.html h 阅读全文
posted @ 2019-03-29 16:51 zerofl-diary 阅读(323) 评论(0) 推荐(0)
摘要:题目: 有一个超级大的int数组要求和,假设有100W,写一个php脚本, 根据当前机器(假设是多核的)cpu的核数,fork出这么多子进程,把数组平分,每个子进程计算其中一部分,并把结果保存到/tmp/子进程pid.txt. 最后父进程汇总并输出求各结果. 思路分析: 使用pcntl扩展提供的pc 阅读全文
posted @ 2019-03-27 10:34 zerofl-diary 阅读(198) 评论(0) 推荐(0)
摘要:问题:一个很大的数据文件,单节点可用内存有限,使用多节点实现文件数据排序。 思路: 1.一个主节点负责将文件分块,如果分3块,则开3个goroutine分别读取文件的一部分,交给一个外部节点独立排序; 2.每个外部节点接收数据并排序,将排序结果传回主节点; 3.主节点从每个外部节点接收一个数据构建最 阅读全文
posted @ 2019-03-20 13:10 zerofl-diary 阅读(956) 评论(0) 推荐(0)
摘要:上一篇进程间通信:共享内存没有实现互斥锁保护,今天用信号量实现一个进程间互斥锁,保护共享变量的修改。 参考资料: http://man7.org/linux/man-pages/man7/sem_overview.7.html http://man7.org/linux/man-pages/man3 阅读全文
posted @ 2019-03-15 17:09 zerofl-diary 阅读(7715) 评论(1) 推荐(1)
摘要:执行效果: 阅读全文
posted @ 2019-03-12 15:05 zerofl-diary 阅读(514) 评论(0) 推荐(0)
摘要:任务:实现一个类bash的管道符功能程序,可以通过特殊符号例如‘@’将第一个程序的输出作为第二个程序的输入。 大体思路: 1. 主进程创建一个管道,得到一对读写fd[2],其中fd[0]用于读,fd[1]用于写。 2. fork子进程1,通过dup2将子进程的标准输出改为fd[1],然后通过exec 阅读全文
posted @ 2019-03-08 14:59 zerofl-diary 阅读(284) 评论(0) 推荐(0)
摘要:任务:主进程打开一段共享内存,fork出8个子进程分别将共享内存map到各自虚拟地址空间中,每个子进程都需要将共享内存中的一个数值加一。 参考文档: http://man7.org/linux/man-pages/man3/shm_open.3.htmlhttp://man7.org/linux/m 阅读全文
posted @ 2019-03-08 14:41 zerofl-diary 阅读(622) 评论(0) 推荐(0)
摘要:ex8.2:要求实现一个ftp服务器,支持cd,ls,put,get等命令,目前实现了用户身份简单确认,获取家目录后可以进行cd,ls,mkdir以及上传和下载文件。 TODO: 1)未实现输入密码时不回显(类似C里的getpass函数); 2)不支持文件夹的上传与下载; 3)未实现与linux用户 阅读全文
posted @ 2019-03-05 12:15 zerofl-diary 阅读(651) 评论(1) 推荐(0)