Linux 断开子进程与主进程的连接

Linux 断开子进程与主进程的连接,linux,python-3.x,multiprocessing,Linux,Python 3.x,Multiprocessing,我有一个Python3脚本,其中包括使用某些命令行参数启动Chrome。代码的相关部分如下所示: import multiprocessing as mp from subprocess import call import time import logging def launch_tab(datadir, url): # Constructs the command line and launches Chrome via subprocess.call() def open_

我有一个Python3脚本,其中包括使用某些命令行参数启动Chrome。代码的相关部分如下所示:

import multiprocessing as mp
from subprocess import call
import time
import logging

def launch_tab(datadir, url):
    # Constructs the command line and launches Chrome via subprocess.call()

def open_browser(urls):
    '''Arranges for Chrome to be launched in a subprocess with the specified
    URLs, using the already-configured profile directory.

    urls: a list of URLs to be loaded one at a time.'''
    first_run = True
    for tab in urls:
        logging.debug('open_browser: {}'.format(tab))
        proc = mp.Process(name=tab, target=launch_tab, args=(config.chromedir, tab))
        proc.start()
        if first_run:
            first_run = False
            time.sleep(10)
        else:
            time.sleep(0.5)
发生了什么
  • 当我运行脚本时,Chrome已经按照脚本启动的方式运行:
  • Chrome按预期启动,看到它已经在运行,遵循命令行上提供的指令,然后终止命令行上启动的进程
  • 由于进程现在已终止,我的脚本也将终止。这就是我想要的行为
  • 当我在Chrome未运行时运行脚本时:
  • Chrome发现它还没有运行,因此不会终止由命令行启动的进程
  • 因为这个过程还没有结束,所以我的脚本直到Chrome退出才退出,尽管它与此无关。我必须记住把脚本放在背景中
我想要什么 我希望启动Chrome的子进程完全独立于主进程,以便在启动Chrome后立即返回命令提示符。在启动Chrome之后,我的脚本已经完成了它的工作。我曾想过使用
daemonize
模块,但它显然不适用于Python3

我不热衷于
多处理
模块。任何产生预期最终结果的合理方法都是可以接受的。切换到Python2以便我可以尝试
daemonize
,这太困难了

该脚本将只在Linux上运行,因此可移植性不是问题