IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:pipes

共 3 篇相关文章

IT 累计浏览 1,933

设置 linux 命令缓冲模式

这篇文章讲的是Linux系统中一个容易被忽略但很实用的细节:命令行工具在管道或重定向时的缓冲模式问题。作者从实际场景出发,点明了在使用管道处理实时数据时,命令默认的全缓冲行为会导致输出延迟,影响即时分析。 文章的核心方案是利用`stdbuf`命令来灵活控制标准输入输出的缓冲策略。作者不仅解释了`-oL`(行缓冲)、`-iL`、`-e0`(无缓冲)等参数的具体含义,还通过`stdbuf -oL tcpdump | grep`这个实例,展示了如何为本身不提供缓冲设置的命令“强行”加上行缓冲,从而实现实时输出。 这个工具的价值在于其通用性,无论目标命令是否支持缓冲参数,都能通过它来调整,解决了数据处理流水线中的阻塞等待问题,让调试和监控更即时高效。

IT 累计浏览 1,327

【IPC通信】基于管道的popen和pclose函数

这篇讲的是C语言中errno的使用技巧,尤其关注如何将其转换为可读的错误信息。文章对比了strerror和perror两种主要方式:strerror可以将错误代码转换为字符串,方便与其他信息组合后输出到用户界面;而perror则能直接向标准错误流输出参数字符串和对应的错误原因,操作更为简便。 作者也指出了一个需要注意的地方:并非所有C库函数都会修改errno,例如gethostbyname函数。因此,正确的做法是仅在函数返回值表示异常时,再去检查errno的值。 文章进一步探讨了errno的线程安全性。通过引用系统头文件的内容,说明在现代Linux环境下,errno通常被实现为线程局部存储,从而确保了多线程环境下的安全。作者还提供了一段简单的代码,帮助读者自行验证当前编译器是否正确设置了相关宏定义,以确保errno行为符合预期。

IT 累计浏览 2,041

hadoop笔记 (2):pipes例子分析 (1)

这篇讲的是Hadoop中一个相对小众但很实用的C++接口——Pipes。由于官方文档的缺失,作者选择了一条很实际的路径:直接从Hadoop自带的示例代码入手,一步步拆解其工作原理。 文章基于Debian 6 amd64和Hadoop 1.0.3的环境,没有空谈理论,而是带着读者走进具体的代码文件。分析的重点在于Pipes如何作为桥梁,让C++编写的Mapper和Reducer能与Java框架进行通信和协作。作者梳理了从任务启动、数据流传输到结果汇总的关键流程,揭示了框架背后如何用序列化和网络通信封装了分布式计算的复杂性。 对于想在Hadoop生态里使用C++,或者对跨语言RPC实现感兴趣的开发者来说,这篇从实际例子出发的梳理,比零散的片段信息更能帮你建立起对Pipes工作机制的整体认识。