我有一个简单的Go应用程序,它偶尔会在后台运行bash脚本。
为了简单起见,我只是在后台启动一个网页的chrome。
#!/bin/env bash
chrome https://www.google.com
现在会发生两件事:
1.已经有一个chrome窗口打开。在这种情况下,chrome会在现有窗口中打开URL并退出。
- chrome窗口还没有打开,在这种情况下,chrome命令成为chrome主进程,并绑定到浏览器窗口,这意味着如果我不关闭浏览器窗口,进程也不会退出,* 如果我的Go程序退出,浏览器也会退出(因为它是一个子进程)。
我不希望第二种情况发生!因为在这种情况下,如果我退出应用程序chrome也退出,我不希望那样。
我是否可以在Go语言中启动一个进程(比如exec.Command
),然后将它从应用程序中完全断开,这样这个进程就可以独立运行了(不会和我的进程一起退出,也不会阻塞它)?
2条答案
按热度按时间wbgh16ku1#
这似乎对我很有效:
关于
Wait
,如果你调用Wait
,它本质上和调用Run
是一样的。Wait
的要点是它允许你在命令开始和等待它完成之间放置代码。与
Run
形成对比的是,在Run
中,"Start"和"Wait"一个接一个地发生,没有在两者之间放置任何东西的选项,或者在本例中,您根本不需要Wait
。https://golang.org/pkg/os/exec#Cmd.Start
9o685dep2#
答案将取决于操作系统,我将假设您使用windows执行此任务。
通过使用--user-data-dir参数,您可以让它启动一个新的目录。
Chrome将独立运行
注意--user-data-dir创建了一个chrome文件夹,每个应用程序的大小在16 mb到100 mb之间不断变化。
如果你想做相反的事情,主进程被附加到chrome进程(双向打开/关闭),那么你可以使用一个信号和cmd。