有没有办法在父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用户)下运行。