Skip to content

brinkqiang/dmsubprocess

Repository files navigation

dmsubprocess

Copyright (c) 2013-2018 brinkqiang ([email protected])

dmsubprocess License blog Open Source Love GitHub stars GitHub forks

Build status

Linux Mac Windows
lin-badge mac-badge win-badge

Intro

dmsubprocess 库提供的主要功能总结:

功能点 描述
执行外部命令并捕获输出 可运行指定命令并捕获其标准输出和标准错误输出内容。
处理命令执行失败 当命令执行失败时返回错误状态(ExitFailure),并提供错误输出信息。
处理不存在的命令 当尝试执行不存在的命令时返回错误,并在Windows和Unix系统给出相应错误信息。
信号中断处理 支持处理子进程/父进程的中断信号(SIGINT/SIGTERM/SIGHUP),返回ExitInterrupted状态。
控制台终端交互支持 可通过use_console参数让子进程继承控制台终端(验证TTY设备)。
单子进程管理 支持添加单个子进程并监控其执行状态,直到完成。
多子进程并发管理 可同时管理多个子进程(如3个并行命令),通过事件循环监控所有进程状态。
大规模子进程处理 支持处理超过1024个子进程(使用ppoll避免文件描述符限制)。
标准输入处理 子进程读取stdin时会检测到输入流已关闭(如cat -命令)。
跨平台支持 兼容Windows(cmd命令)和Unix-like系统(ls, kill等命令)。
状态查询接口 提供Done()方法检查子进程是否执行完成。
退出状态码获取 通过Finish()返回退出状态(ExitSuccess/ExitFailure/ExitInterrupted)。
异步事件驱动机制 通过DoWork()实现非阻塞的事件循环,监控子进程状态变化。
资源限制处理 在Unix系统自动处理文件描述符限制(通过setrlimit调整)。

关键实现特性

  • 使用SubprocessSet集中管理子进程集合
  • 通过轮询(DoWork)实现异步执行监控
  • 提供统一的输出捕获接口(GetOutput()
  • 支持子进程的中断信号传播和处理
  • 针对大规模并发场景优化(超过1024个子进程)

Contacts

Thanks

About

C++ Cross-platform subprocess library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages