子进程、环境与操作系统交互
Python 文件、网络与系统编程#Python全栈#第四阶段#Python 文件、网络与系统编程#子进程、环境与操作系统交互约 628 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Python 程序调用外部命令,为什么通常使用 subprocess?
追问 相比只取得一个状态码,参数、输入、输出与超时管理有什么优势?
subprocess.run() 与 Popen 各适合什么任务?
追问 等待任务结束与持续控制进程生命周期如何选择?
参数列表与拼接 Shell 命令有什么区别?
追问 空格、引号、通配符和用户输入如何影响执行?为什么默认不应使用 shell=True?
如何取得子进程返回码、标准输出和标准错误?
追问
check=True 的失败行为与手工检查返回码有什么区别?子进程输出为字节还是文本,如何控制?
追问 编码由谁决定?外部工具输出编码与父程序预期不同怎么办?
如何设置子进程工作目录与环境变量?
追问 只传入少量 env 项可能丢失哪些必要环境?如何避免修改父程序的全局工作目录?
子进程超过超时,父程序应如何处理?
追问 高层与低层 API 的超时行为有什么不同?如何终止、收集剩余输出并等待退出?
为什么使用 PIPE 后只等待子进程结束,可能产生死锁?
追问 管道缓冲、输出读取与
communicate() 如何协作?大输出又如何避免全部放入内存?主程序终止后,子进程与孙进程是否一定一起退出?
追问 进程组、信号与平台差异如何影响清理?如何验证没有遗留进程?
如何使用当前虚拟环境的 Python 启动另一个脚本?
追问
sys.executable、参数列表、工作目录和启动失败分别如何管理?子进程管理可结合 Python 官方 subprocess 文档 核查超时与管道行为。