系统的进程机制
linux
1 | linux下的进程机制,当父进程被杀死之后,子进程就被系统接管 |
windows
1 | windows下的进程机制就不太一样了,当父进程被杀死之后,子进程也会被杀死 |
实现golang的后台
如果想实现golang子进程后台,而且不杀死当前父进程,那么我们至少得创建子进程,子进程创建孙进程,然后杀死子进程,这种方法不管在linux还是windows都可以实现
如果使用c语言我们可以使用系统提供的fork,使用double fork实现上述过程
golang只提供了forkexec,也就是说一个程序只能创建子进程
通过这个我想到了一个比较另类的方法,就是在创建进程的时候再次调用本程序再创建进程,这样就相当于创建了子进程,子进程创建孙进程
实现就是给程序加参数,再次调用的时候加上这个参数再创建想要的进程
1 | func daemonF(){ |
1 | 比如我们有一个程序叫makebk,有一个参数 -d |
这样就得到我们想要的三层结构了,这时候让父进程杀死make -d,就实现子进程被系统接管,实现子进程后台