鱼C论坛

 找回密码
 立即注册
查看: 4758|回复: 19

python subprocess 执行 shell问题

[复制链接]
发表于 2023-4-29 09:15:41 From FishC Mobile | 显示全部楼层
从您的说明来看,您希望以用户1004的身份执行可执行文件并返回结果。我推测您将在符合 POSIX 标准的系统上运行这个程序。
在您的程序中,我发现了如下的问题,让我们来一一确认。
首先,您似乎尝试打印一个 Popen 对象作为其表示的进程的运行结果,这是不恰当的。您应该访问 result2 的 returncode 属性来获取其运行的返回值,或者从 result2 的 stdout 和 stderr 类文件对象中读取输出信息。请注意这可能需要首先使用 wait 或类似方法等待进程结束。
其次,使用字符串作为命令行向 Popen 传递的方式不值得推荐,因为在拼接中可能出现转义等问题。您可以试试使用参数序列传递要执行的程序和参数,如传递一个列表,其中第一个元素是要执行的程序名,之后各个元素依次为各个参数。
最后,Popen 提供了可选参数 user 来以另外的用户身份运行子进程,可以更方便的进行用户切换且不影响当前进程。您可以试试用这一参数替代 os.setuid。
请注意,切换用户操作可能需要对应的能力或以根用户身份运行程序。另外,由于问题也可能出现在要执行的程序中,由于不知道其具体内容,我无法就此给出建议。
希望这些建议对您有帮助。如果仍有问题欢迎继续向我提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表