程序能否检测是否通过外壳启动?

问题描述 投票:0回答:1

是否有底层概念允许程序(在这种情况下为ls,检测它是否通过外壳启动?

[我注意到p1p2在Windows上共享相同的stdout,但在Linux上不共享。

导入子过程

cmd = ['ls', '-la']
# Using shell
p1 = subprocess.run(executable=cmd[0], args=cmd[1:], shell=True, text=True, capture_output=True)
# Without using shell
p2 = subprocess.run(executable=cmd[0], args=cmd[1:], shell=False, text=True, capture_output=True)

print(p1.stdout)
print(p2.stdout)

Linux上的输出

total 12
drwxr-xr-x  2 root root 4096 Feb 20 18:25 .
drwx------ 10 root root 4096 Feb 20 18:51 ..
-rw-r--r--  1 root root  269 Feb 20 18:57 test.py

test.py
python python-3.x shell subprocess
1个回答
0
投票

没有办法像您一样告诉[[通过查看返回值 run()调用。

返回的值(p1)不存储shell的属性:

>>> p1.__dict__ {'args': 'ls', 'returncode': 0, 'stdout': None, 'stderr': None}

© www.soinside.com 2019 - 2024. All rights reserved.