安全启动外部过程的工具
app-executor的Python项目详细描述
应用程序执行器
此程序可用于从python脚本启动外部可执行文件。
它还可以收集其中的stdout
和stderr
并将其存储到文本文件中。
如果出现任何故障,它还可以提供一些基本的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_1
,process_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
包一起executor
pytest 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# ...