嗨,我正试图使用python的fork和execl来创建一个新的bash进程并删除一个目录“tentdir”。
我写了以下代码:

import os

pid = os.fork()
if pid == 0:
    os.execl('/bin/rm', 'rm-rf', 'temptdir') # temptdir is a directory in home folder.

我希望它会创建一个新的bash进程,并在bash中运行以下命令:
rm -rf temptdir

删除temptdir目录,但它显示:
rm-rf: temptdir: is a directory

知道它为什么不删除目录吗?还有怎么解决?
最后,在python文档中,python execl命令的fortmat为:
execl(  path, arg0, arg1, ...)

但如果我跑:
os.execl('/bin/echo','hello')

它什么都没印。为什么要添加额外的“echo”参数,如:
os.execl('/bin/echo','echo','hello')

最佳答案

您需要分别传递参数。因为-rfrm的独立参数。

import os

pid = os.fork()
if pid == 0:
    os.execl('/bin/rm', 'rm', '-rf', 'temptdir') # temptdir is a directory in home folder.

关于python - rm -rf不会通过python fork execl脚本删除目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52620378/

10-11 00:19