我想在Windows CMD控制台中运行两个命令.
在Linux中,我会这样做
touch thisfile ; ls -lstrh
Run Code Online (Sandbox Code Playgroud)
它是如何在Windows上完成的?
我是系统管理员,我被要求运行linux脚本来清理系统.
命令是这样的:
perl script.pl > output.log &
Run Code Online (Sandbox Code Playgroud)
所以这个命令以&符号结尾,有什么特别的意义吗?
我有shell的基本知识,但我以前从未见过这个.
我最近遇到了一些有关堆栈溢出的帖子,说子进程比os.system好得多,但是我很难找到确切的优点.
我遇到的一些例子:https: //docs.python.org/3/library/os.html#os.system
"子进程模块提供了更强大的工具来生成新进程并检索其结果;使用该模块比使用此函数更可取."
不知道它在哪些方面更强大,我知道在很多方面使用子进程更容易,但实际上它在某种程度上更强大吗?
另一个例子是:
子进程与系统的优点是它更灵活(你可以得到stdout,stderr,"真正的"状态代码,更好的错误处理等等).
这篇帖子有2600多张选票.再一次找不到更好的错误处理或真实状态代码意味着什么.
该帖子的最高评论是:
无法理解为什么你使用os.system即使是快速/脏/一次性.子进程看起来好多了.
同样,我理解它使一些事情稍微容易些,但我几乎无法理解为什么例如:
subprocess.call("netsh interface set interface \"Wi-Fi\" enable", shell=True)
Run Code Online (Sandbox Code Playgroud)
比任何更好
os.system("netsh interface set interface \"Wi-Fi\" enabled")
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释一些它更好的原因吗?
我想要:
我玩过subprocess.Popen,os.exec,os.spawn,os.system ......但没有成功.
另一种解释问题的方法:如果有人杀死了myexe.exe(arg0)的"进程树",如何保护myexe.exe(arg1)?
编辑:同样的问题(没有答案)在这里
编辑:以下命令不保证子进程的独立性
subprocess.Popen(["myexe.exe",arg[1]],creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP,close_fds = True)
Run Code Online (Sandbox Code Playgroud) python ×2
windows ×2
batch-file ×1
cmd ×1
command-line ×1
linux ×1
os.system ×1
process ×1
shell ×1
subprocess ×1
unix ×1