安全启动外部过程的工具

app-executor的Python项目详细描述


应用程序执行器

此程序可用于从python脚本启动外部可执行文件。 它还可以收集其中的stdoutstderr并将其存储到文本文件中。 如果出现任何故障,它还可以提供一些基本的stacktrace收集。

导入app_executor包允许访问两个基本类:

  • app_executor.Process-此类可用于直接启动过程
  • app_executor.AppExecutor-该类可用于 启动多个进程

示例用法

app_executor.Process

此代码启动whoami,并将其别名为MyName-所有警告/错误打印 将使用此别名以提高可读性。然后它运行这个过程 等待1秒钟。最后它打印结果代码 已执行命令的实际输出(stdout和stderr组合)。

在退出步骤中,命令将被停止(首先将尝试) 终止它,如果失败-杀死它)。然后它会表演 核心转储分析(如果在执行期间收集了核心转储)。

所有结果文件-来自gdb、进程本身、核心转储和stacktrace的日志 放入/some/path/MyName目录。

importapp_executorwithapp_executor.Process(name='MyName',cmd='whoami',parent_context_dir='/some/path')asprocess:process.run()ifnotprocess.wait(timeout=1):raiseException('Process hanged for too long!')print('Returncode was: {}'.format(process.get_rc()))print('Output of whoami: {}'.format(process.get_logfile()))

app_executor.AppExecutor

此代码的工作原理与前一代码类似。这里的执行路径是一次性传递的 稍后启动的进程。app_executor.AppExecutor可以指定 别名本身(process_1process_2等)或用户可以手动设置它们。

run函数返回可用于交互的app_executor.Process对象 在以后的过程中(类似于前一个例子)。

退出步骤^ {< CD5>}将停止每个子进程 如果收集到核心转储,则执行转储分析。将存储所有结果文件 在路径/some/path/$NAME_OF_THE_PROCESS下。

importapp_executorwithapp_executor.AppExecutor('/some/path')asexecutor:p1=executor.run('whoami')p2=executor.run('sleep 1','MyCustomAlias')# ...# operations on p1 and p2 app_executor.Process objects# ...

executor固定装置

与安装app_executor包一起executorpytest fixture成为 可用。它创建app_executor.AppExecutor,并将tmpdir作为工作传递 它的目录。在fixture拆卸时,所有生成的进程都将停止。

deftest_some_executing(executor):p1=executor.run('whoami')p2=executor.run('sleep 1')# ...# operations on p1 and p2 app_executor.Process objects# ...

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java,我如何在方法中放置一个开关盒?   Java将数组添加到数组特殊模式   java的类常量和文件导入   如何在java中使用正则表达式更改匹配子字符串的前缀和后缀   Java Hashmap实现中的字符串哈希问题   java如何计算数组中的连续数字组   处理异常后如何在java中重新启动thrift服务器?   java嵌套列表迭代器。程序不会终止   如何在maven目标目录下的JAR文件中运行java类?   mysql Java JPA/Hibernate级联删除   java使用ApachePDFBox在PDF中查找javascript代码   java将hsqlDB集成到netbeans 7 IDE中   java如何删除word梯形图中的最后一个“>”   java如何存储由Minimax扩展的节点数