如何使用Java中的Process Builder将父进程创建为子进程作为init进程

时间:2013-06-14 11:50:15

标签: java process init

有没有办法在父ID为1的java中通过Process Builder创建进程,而unix用户是除root用户以外的任何其他unix用户。我正在开发一个java(将以root用户身份运行)的应用程序,它将启动,停止和监视unix操作系统中的进程。我在java中使用Process Builder在启动操作期间创建进程。默认情况下,进程父ID是我的应用程序的进程ID。我需要将这些启动进程的父进程id设置为init进程(ppid = 1)。因为如果我的应用程序崩溃或停止,我的应用程序启动的这些过程仍然存在(即不要停止)。因为在目前的情况下这些进程的ppid是我的applcation的进程id,当我的应用程序关闭时这些进程也会自动杀死。

我在这里添加了两个案例,我观察过这个行为: 以下是两种情况:1)首先是我用root用户运行我的应用程序然后用java中的进程生成器创建子进程,在这种情况下,子进程将使用ppid作为我的应用程序ID但是当我杀死我的应用程序时,ppid子进程的变为1(init进程),但子进程由root用户运行(我不想要它,它应该在另一个Unix用户下运行)。

2)在案例2中,当我除了root用户以外的其他Unix用户运行我的应用程序时,当我杀死我的应用程序时,子进程也会被杀死。

但是我需要与第一种情况相同的行为,即它应该继续使用ppid 1运行,但应该在我的Unix用户(不是root用户)下运行。

0 个答案:

没有答案