首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏悠扬前奏的博客

    Java NIO-11.管道

    Java NIO管道(Pipe)是两个进程间的单向连接。管道有一个源通道和一个sink通道,往sink通道中写数据,数据就能从source通道中读取。 ? Pipe Internals 创建管道 调用Pipe.open()方法就能打开一个Pipe: Pipe pipe = Pipe.open() 往Pipe中写 往Pipe中写,需要访问sink通道,例如:

    48330发布于 2019-06-02
  • 来自专栏悠扬前奏的博客

    Java并发-11.管道输入输出流

    管道输入/输出流可以用于线程之间的数据传输,传输媒介为内存 有四种实现:PipedOutputStream,PipedInputStream,PipedReader和PipedWriter,前两种面向字节

    66160发布于 2019-05-28
  • 来自专栏初见Linux

    爬虫小白:11.scrapy框架(六) _媒体管道

    一、媒体管道(ImagesPipeline)是什么? scrapy提供了专门下载的PIpeline,包含文件下载和图片下载。 二、为什么要有媒体管道? 简化操作,比如存储等。当然我们可以进行重写。 将下载图片转换成通用的JPG和RGB格式 避免重复下载 缩略图生成 图片大小过滤 异步下载 三、媒体管道的使用 1)使用 工作流程: 爬取一个Item,将图片的URLs放入image_urls字段 从Spider 'scrapy.pipelines.images.ImagesPipeline' 这是媒体基础管道,可以试一下。 3、 配置settings中的ITEM_PIPELINES: ITEM_PIPELINES={ #方法一: 管道开启 '项目名.piplines.自定义类名':1 , #后面数字1让它马上调用。 #方法二: 这是图片基础管道,scrapy写的,直接开启它就行了。

    1.1K20发布于 2020-08-05
  • 来自专栏ljw

    匿名管道和命名管道

    2:管道只能单向通信 3:父子进程是会进程协同的,同步与互斥的--保护管道文件的数据安全 4:管道是面向字节流的 5:管道是基于文件的,而文件的生命周期是随进程的 再测试,把子进程sleep去掉,就是让子进程写快一点 ,父进程sleep几秒,就是让父进程读慢一点,看有什么现象 管道的四种情况 测试管道大小 把c一直往管道里写,把父进程中休眠50秒 结果差不多64kb 写端退了,测试结果 结果是: 读端正常读,写端关闭 以上是匿名管道 总文件总代码 makefile中代码 ProcessPool:ProcessPool.cc g++ -o $@ $^ -std=c++11 .PHNOY:clean clean: string path; }; makefile .PHONY:all all:client server server:server.cc g++ -o $@ $^ -g -std=c++11 mkdir log client:client.cc g++ -o $@ $^ -g -std=c++11 .PHONY:clean clean: rm -f server client server.cc

    73010编辑于 2024-10-18
  • 来自专栏学习

    【Linux】管道通信——命名管道

    命名管道 vs. 如何创建命名管道 手动创建命名管道: mkfifo FIFO 这个FIFO也是一个文件,被操作系统特殊标记过,是管道文件。 CLIENT_SRC=Client.cc .PHONY:all all:$(SERVER) $(CLIENT) $(SERVER):$(SERVER_SRC) $(cc) -o $@ $^ -std=c++11 $(CLIENT):$(CLIENT_SRC) $(cc) -o $@ $^ -std=c++11 .PHONY:clean clean: rm -f $(SERVER) $(CLIENT) 由于在 ,我们封装一个类,用于管理管道文件的创建和销毁,声明一个全局变量,构造函数用于创建管道,析构函数用于销毁管道,由于全局变量的生命周期是和程序一样的,所以当程序结束的时候管道文件也跟着销毁,也意味着通信结束

    1.2K10编辑于 2025-02-25
  • 来自专栏学习之路

    【Linux】IPC 进程间通信(一):管道(匿名管道&命名管道

    2.3 匿名管道通信案例(父子通信) 注意:匿名管道需要在创建子进程之前创建,因为只有这样才能复制到管道的操作句柄,与具有亲缘关系的进程实现访问同一个管道通信 情况一:管道为空 && 管道正常(read Client_SRC=Client.cc .PHONY:all all:$(SERVER) $(CLIENT) $(SERVER):$(SERVER_SRC) $(CC) -o $@ $^ -std=c++11 $(CLIENT):$(Client_SRC) $(CC) -o $@ $^ -std=c++11 .PHONY:clean clean: rm -f $(SERVER) $(CLIENT) . 就会阻塞 4.4 匿名管道与命名管道的区别 匿名管道与命名管道的区别 匿名管道由 pipe函数 创建并打开。 管道分为两种类型:无名管道和命名管道 无名管道主要用于具有亲缘关系的进程(如父子进程),在创建时不需要名称,只能通过文件描述符进行访问 命名管道(FIFO)则可以在任何进程之间通信,使用文件系统中的路径来标识

    1.2K10编辑于 2024-11-19
  • 来自专栏code人生

    Redis 管道

    Redis管道是一种通过一次发出多个命令而不等待每个单独命令的响应来提高性能的技术。大多数Redis客户端都支持管道。本文档描述了管道旨在解决的问题以及Redis中管道的工作原理。 Redis自早期以来就支持管道,因此无论您运行的是哪个版本,都可以将管道与Redis一起使用。 当使用管道时,通常使用单个read()系统调用来读取多个命令,使用单个write()系统调用来传递多个回复。 因此,每秒执行的总查询数量最初随着管道长度的增加而几乎线性增长,并最终达到未使用管道时获得的基线的10倍,如下图所示: 示例 在接下来的基准测试中,我们将使用支持管道的Redis Ruby客户端来测试由于管道而带来的速度提升 管道 vs 脚本 使用Redis脚本[2](自Redis 2.6起可用),可以通过在服务器端执行大量所需工作的脚本来更有效地解决许多管道用例。

    53910编辑于 2024-04-11
  • 来自专栏利志分享

    关于go的只读管道只写管道以及单向管道的理解

    ,只能写数据到管道里面 func writeChan(ch chan<- int) { ch <- 1 } //单向只读管道,只能从管道里面读出数据 func readChan(ch <-chan { value := <-ch fmt.Println(value) } 上面的例子,writeChan只能对ch变量进行写操作,readChan只能对ch变量进行读操作,这样造成很多同学对管道理解就有了只读和只写管道了 ,其实管道都是双向的,默认双向可读写,只是管道在函数参数传递时可以使用操作符限制管道的读写,就如上面的例子。 关于上面单向管道的例子,单向管道只能用于发送或者接受数据,但是go的管道其实是没有单向管道,所谓的单向管道只是对管道的一种使用限制,这个和c语言const修饰函数参数为只读是一个道理。 总结: go语言是没有只读管道,只写管道,单向管道。 所谓的只读管道,只写管道,单向管道只是对go的管道一种限制使用。

    1.3K10编辑于 2022-04-25
  • 来自专栏1++的Linux

    详解管道

    进程间通信的发展:管道System V进程间通信POSIX进程间通信管道:匿名管道pipe命名管道System V IPC:System V 消息队列System V 共享内存System V 信号量POSIX IPC:消息队列共享内存信号量互斥量条件变量读写锁二,管道管道是Unix中最古老的进程间通信的形式。 这样通信方式我们叫做匿名管道管道的本质是一种文件。下面我们来简单的实现一个匿名管道:使用pipe系统调用来创建匿名管道。 因此管道可以让进程间协同,提供了访问控制。管道提供的是面向流式的通信服务,其生命周期随进程。从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。 :命名管道与匿名管道的原理相同,都是通过让两个进程看到同一份资源,从而实现通信,但命名管道不再局限于父子进程之间,而是任意两个进程之间实现通信。

    60151编辑于 2023-10-30
  • 来自专栏C++

    【Linux】IPC:匿名管道、命名管道、共享内存

    管道是Unix中最古老的进程间通信的形式 从一个进程连接到另一个进程的一个数据流称为一个“管道管道的原理: 管道只能进行单向通信。 管道不需要路径,也就不需要名字,所以叫做匿名管道。 这个过程是管道内部自己做的。 现象: 管道为空&&管道正常,read会阻塞(read是一个系统调用)。 管道为满(管道资源是有限的)&&管道正常,write会阻塞。 根据上面的分析,所有的子进程的file_struct都会指向第一个管道,越往后的子进程指向的管道越多。 所以不难得出,匿名管道两端必须是父子进程。而如果我们想在任意进程之间建立管道呢?

    93400编辑于 2025-01-27
  • 来自专栏Elastic Stack专栏

    ​将 Logstash 管道转换为 OpenTelemetry Collector 管道

    简化的遥测管道:使用接收器、处理器和导出器构建管道的能力,通过集中数据流和减少多个代理的需求,简化了遥测管理。 Logstash 管道与 OTEL Collector 组件的比较 我们可以将 Logstash 管道和 OTEL Collector 管道组件如何相互关联进行示意化: 理论够多了! {"log_level":"INFO","message":"User login successful","service":"auth-service","timestamp":"2024-10-11 exporters: - elasticsearch 这些配置将会在 Elasticsearch 中生成以下文档: { "@timestamp": "2024-10-11T12 WARNING\",\"message\":\"User login successful\",\"service\":\"auth-service\",\"timestamp\":\"2024-10-11

    73421编辑于 2024-12-10
  • 来自专栏乐行僧的博客

    进程通信(一)无名管道和有名管道

    管道(共享文件)提供输入的发送进程(即写进程),以字符流的形式将大量的数据送入(写)管道;而接受管道输出的接受进程(即读进程),则从管道接受(读)数据。 为了协调双方的通信,管道机制必须提供一下三个方面的协调能力:互斥、同步和确定对方存在。 下面以linux的管道为例进行说明。在linux中,管道是一种频繁使用的通信机制。 从本质上讲,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件通信的两个问题,具体表现为: 1)限制管道的大小。实际上,管道是一个固定大小的缓冲区。 注意 :从管道读数据是一次性操作,数据一旦被读走,它就从管道中被抛弃,释放空间以便写更多的数据。管道只能采用半双工通信,即在某一时刻只能单向传输。要实现父子进程双方互动,需要定义两个管道。 2.有名管道 由于无名管道的局限性,仅限于有血缘关系的进程间通信,所以当需要在不同进程(无血缘关系的进程)之间通信,pipe就不能被使用了。取而代之是有名管道(fifo)。

    1.9K20编辑于 2022-02-24
  • 来自专栏以Java架构赢天下

    速度不够,管道来凑——Redis管道技术

    Redis客户端与服务器之间使用TCP协议进行通信,并且很早就支持管道(pipelining)技术了。在某些高并发的场景下,网络开销成了Redis速度的瓶颈,所以需要使用管道技术来实现突破。 管道技术其实已经非常成熟并且得到广泛应用了,例如POP3协议由于支持管道技术,从而显著提高了从服务器下载邮件的速度。 在Redis中,如果客户端使用管道发送了多条命令,那么服务器就会将多条命令放入一个队列中,这一操作会消耗一定的内存,所以管道中命令的数量并不是越大越好(太大容易撑爆内存),而是应该有一个合理的值。 使用管道时,多个命令只会进行一次read()和wrtie()系统调用,因此使用管道会提升Redis服务器处理命令的速度,随着管道中命令的增多,服务器每秒处理请求的数量会线性增长,最后会趋近于不使用管道的 下面就来对比一下使用管道和不使用管道的速度差异。

    1.5K30发布于 2019-06-06
  • 来自专栏学习之路

    【Linux进程#1】IPC 进程间通信(一):管道(匿名管道&命名管道

    2.3 匿名管道通信案例(父子通信) 注意:匿名管道需要在创建子进程之前创建,因为只有这样才能复制到管道的操作句柄,与具有亲缘关系的进程实现访问同一个管道通信 情况一:管道为空(父进程) && 管道正常 Client_SRC=Client.cc .PHONY:all all:$(SERVER) $(CLIENT) $(SERVER):$(SERVER_SRC) $(CC) -o $@ $^ -std=c++11 $(CLIENT):$(Client_SRC) $(CC) -o $@ $^ -std=c++11 .PHONY:clean clean: rm -f $(SERVER) $(CLIENT) . 就会阻塞 4.4 匿名管道与命名管道的区别 匿名管道与命名管道的区别 匿名管道由 pipe函数 创建并打开。 管道分为两种类型:无名管道 和 命名管道 无名管道主要用于具有亲缘关系的进程(如父子进程),在创建时不需要名称,只能通过文件描述符进行访问 命名管道(FIFO)则可以在任何进程之间通信,使用文件系统中的路径来标识

    55010编辑于 2025-06-02
  • 来自专栏爬虫逆向案例

    爬虫管道

    import pymongo import redis from .settings import REDIS_HOST, REDIS_PORT, MONGO_HOST, MONGO_PORT 数据源的管道 ‘] = datetime.utcnow() # 记录爬虫 item[‘spider‘] = spider.name return item Json的管道 def close_spider(self, spider): self.write.finish_exporting() self.file.close() Csv的管道 close_spider(self, spider): self.write.finish_exporting() self.file.close() mongodb数据库管道 item)) return item def close_spider(self, spider): self.client.close() redis数据库管道

    62410发布于 2021-11-22
  • 来自专栏python3

    Python管道

    通过管道操作,可以指定一个程序的输出为另一个程序的输入,即将一个程序的标准输出与另一个程序的标准输入相连,这种机制就称为管道。 通常,管道操作的预防格式如下: 程序1 | 程序2 | 程序3…… | 程序n 其主要目的是将“程序1”的标准输出连接到“程序2”,将“程序2”的标准输出连接到“程序3”输入,依次类推。 此处可以给出管道执行的示意图,如下图所示。 ?

    1.4K60发布于 2020-01-09
  • 来自专栏角落的白板报

    ASP.NET Core中HTTP管道和中间件的二三事-11

    配置ASP.NET Core请求(Request)处理管道 在本视频中,我们将讨论使用中间件组件为asp.net core 应用程序配置请求处理管道。 作为应用程序启动的一部分,我们要在Configure()方法中设置请求处理管道。 使用Run()扩展方法,我们只能将一个终端中间件添加到请求管道。 终端中间件是我们之前已经说到过,他会使管道短路,不会去调用下一个中间件。 请求处理管道的中3个非常重要的知识点: 所有的请求都会在每个中间件组件调用next()方法之前触发。请求按照图中箭头的所示方向,依次穿过所有管道。 当中间件处理请求并产生响应时,请求处理流程在管道中开始反向传递。 所有的响应都会在每个中间件组件调用next()方法之前触发。响应按照图中箭头的所示方向,依次穿过所有管道

    92920发布于 2019-05-05
  • 来自专栏机器和智能

    【进程间通信】IPC、管道pipe、命名管道FIFO

    二、pipe管道 1. 什么是管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe()系统函数就可以创建一个管道。 ③ 如果父进程关闭管道读端,子进程关闭管道写端,此时父进程可以向管道中写入数据,子进程将管道中的数据读出,反之同理。 如果有指向管道写端的文件描述符没关闭(管道写端引用计数大于0),而持有管道写端的进程也没有向管道中写数据,这时有进程从管道读端读数据,那么管道中剩余的数据都被读取后,再次read会阻塞,直到管道中有数据可读了才读取数据并返回 (在讲信号的时候会细说) 如果有指向管道读端的文件描述符没关闭(管道读端引用计数大于0),而持有管道读端的进程也没有从管道中读数据,这时有进程向管道写端写数据,那么在管道被写满时再次write会阻塞,直到管道中有空位置了才写入数据并返回 其实,总的来说可以分为读管道和写管道两种的情况 读管道 如果管道中有数据,read返回实际读到的字节数。 如果管道中无数据: 如果管道写端被全部关闭,read返回0,相当于读到文件结尾。

    1K10编辑于 2024-08-08
  • 来自专栏全栈程序员必看

    管道(Pipe)createPipe

    ); 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道server,连接到一个管道的进程为管道客户机。 一个进程在向管道写入数据后,还有一进程就能够从管道的还有一端将其读取出来。 假设父进程要发送数据到子进程,父进程可调用WriteFile()将数据写入到管道(传递管道写句柄给函数),子进程则调用GetStdHandle()取得管道的读句柄,将该句柄传入ReadFile()后从管道读取数据 然后,父进程调用ReadFile()从管道读取出数据(传递管道读句柄给函数)。 管道server在调用CreatePipe()创建管道时以參数nSize对管道的缓冲大小作了设定。   

    1.6K10编辑于 2022-07-13
  • 来自专栏技术分享

    Pipe管道利用

    Pipe管道利用 在 Windows 操作系统中,管道(Pipe) 是一种进程间通信(IPC)的机制,允许数据在两个进程之间传输。管道有两种主要类型:匿名管道和命名管道。以下是它们的详细介绍: 1. 典型用例: 父进程创建匿名管道,并将其句柄传递给子进程,允许父子进程共享数据。 例如,使用匿名管道从子进程中捕获输出(如命令行工具输出)。 示例: 创建命名管道: 创建命名管道: HANDLE hPipe = CreateNamedPipe( TEXT("\\\\. 管道实现的分离免杀 可以跟倾旋的文章:https://payloads.online/archivers/2019-11-10/5 绕过防火墙的限制 远程命名管道 使用 SMB 协议(Server Message 攻击流程 创建命名管道:使用 CreateNamedPipe 函数创建一个命名管道。 等待客户端连接:使用 ConnectNamedPipe 等待目标系统中的高权限进程连接到该管道

    63400编辑于 2024-12-17
领券