
获得徽章 18
- 一个实用的开源项目,可以快速将 Elasticsearch 数据导出到 csv
既可以命令行使用,也可以程序中调用,还是相当使用的评论1 - 进程间通信
每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux内核提供了不少进程间通信的机制:管道、消息队列、共享内存、信号量、信号、Socket。
管道:包括匿名管道pipe和命名管道FIFO,管道传输数据是单向的,原理是一个进程写入的数据缓存在内核,另一个进程从内核中读取数据。
匿名管道的通信范围是存在父子关系的进程。在shell里通过“|”将两个命令连在一起,实际上也是创建了两个子进程,它们的父进程都是shell。
命名管道通过mkfifo命令来创建,它在不相关的进程间也能够相互通信。
消息队列:消息队列是保存在内核中的消息链表,消息队列生命周期随内核。
共享内存:共享内存的机制,就是拿出一块虚拟地址来映射到相同的物理内存中。不需要从用户态拷贝数据到内核态。
信号量:信号量是一个整型的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。控制信号量的方式有两个原子操作:P/V操作,P操作将信号量减一,V操作将信号量加一。在进入共享资源之前做P操作,离开共享资源做V操作。
信号:对于异常情况下的工作模式,需要用信号的方式来通知进程。Linux中提供了几十种信号,通过kill -l查看。
Socket:想要跨网络与不同主机上的进程之间通信,就需要Socket通信。创建Socket的系统调用:int socket(int domain, int type, int protocol),domain用来指定协议族(AF_INET、AF_INET6、AF_LOCAL/AF_UNIX),type指定通信特性(SOCK_STREAM字节流、SOCK_DGRAM数据报、SOCK_RAW原始套接字),protocol原本用来指定通信协议,现在基本废弃,一般传0即可。展开评论11 - 川藏线第五天,泸定到康定,50公里,我骑了九个小时
。
图1:刚出泸定县城
图2:买了瓶冰阔落,喝了一口,没拧紧,全倒包里面了。
图3:小天都隧道,四点半才爬到。
图4:路遇一个轮滑走川藏的大姐(年龄确实比我大太多,叫小姐姐好像也不合适)
图5:快到康定县城了
图6:码表记录
明天:康定修整一天
感想:康定没有情歌,只有爬坡
遇到一个之前骑友在路边的留言,挺好的:
人生就是一段路,当你觉得费力时,你已经走上坡路了!加油,少年!展开2048