关于 nng/nanomsg 库的一点想法
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便。
NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版。
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便。
NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版。
本文给出一个 Python tkinter GUI 程序中调用 shell 脚本的代码示例,在 GUI 的一个文本框中会不断输出脚本的标准输出和标准错误且不会阻塞 GUI 窗体事件响应,同时也会在脚本执行完毕后根据状态(exit code)弹出提示框,如果在脚本运行中关闭窗口,会弹出提示并中断脚本的执行。
这个样例很适合编写一些提供给非技术人员使用的小工具。
为了便于自动化版本管理,在C\C++项目中通常会考虑使用 Git 标识的版本作为程序版本号,本文介绍如何在 CMake 构建的项目中加入此项功能支持。
适用于桌面以及嵌入式 Linux 环境脚本编程。
做嵌入式 Linux 开发时候都需要使用交叉编译工具,这些一般是方案厂商提供,但我们通常也可以使用那些打包好的通用交叉编译工具,比如 Debian 上 apt 也有打包好的 arm 交叉编译工具: gcc-arm-linux-gnueabi
和 gcc-arm-linux-gnueabihf
,对应 c++ 版本以 g++ 开头,这两类主要区别在于 CPU 对于浮点的处理上,涉及到 armel
和 armhf
架构的区别,详情参照这里,你只需要选择对应开发板的架构工具即可。
由于是 Debian 自己维护更新的包,上述的两个交叉编译工具通常都会更新比较频繁,会支持最新的标准和特性,但是我们的开发板上系统通常都不是最新的,所以在使用时需要注意,否则会出现编译后的程序无法在开发板上运行。
最近在将 mruby 应用到嵌入式环境时就遇到这个问题。
在 C\C++ 项目中,通常会有不止一个可执行程序,或者需要将一些调用封装成动态或静态库,来实现项目的模块化,本文就讲解一种支持这种项目布局的方法。
CMake 支持子目录构建(add_subdirectory
指令),本文介绍的布局方法就是基于这个功能来实现。
通常来说,使用 shell 脚本时候不需要太顾及程序的效率性,能完成任务,只要不是太慢,都可以接受。
但在一些特定应用场合,脚本效率也是一个硬性限制,不能耗时太久,比如说,用 shell 来编写一些处理 HTTP 请求的 CGI 程序,脚本的执行效率直接影响了 HTTP 的响应速度。
在 shell 中分割字符串有多种方法,比如利用 awk、cut 工具,还有内置方法,虽然效果相同,但是执行效率差距较大,尤其在处理大数据量上更是显著。