This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
Hi, I am writing a multi-cd spanning installer for a particular software in Linux (Redhat 4 or greater / Suse )
My Program is in Java. A Shell Script is used to fork the java process. I found out that when the Installer tries to go to the next disc when prompted so, by the installer, the eject command or the umount command is not able to eject / unmount the CD which is already there in the drive.
The eject / umount reports that the device is busy.
Now I tried to find out the process which is accessing the CD-ROM device and the output of command fuser -m /cdrom0
gives me the PID of the shell process which was used to launch this Java process.
Please note that the Java Process has a separate PID. Also please note as soon as the user launches the shell command for the installer, I copy the files to the temporary directory and then cd to the temporary dir location and then fork the java process from there.
How can i solve this problem ? How can i make the mount of the second and subsequent CD Drives work without this issue ?
Thanks in advance, Jiju Jacob [ EJFH: UseTheForumNotEmail ] [ July 17, 2008: Message edited by: Ernest Friedman-Hill ]
I suspect that you are just executing the Java process within the shell itself (which would be why you are still seeing the shell's PID). If you no longer need that shell, then you could try exec to replace the shell process with the Java process.
man sh then search for exec. Personally I searched for exec[^u] so that I was able to skip all the instances of "executable".