File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Linux / UNIX and the fly likes Shell program locking up CD Drive Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Engineering » Linux / UNIX
Bookmark "Shell program locking up CD Drive " Watch "Shell program locking up CD Drive " New topic
Author

Shell program locking up CD Drive

Jiju Jacob
Greenhorn

Joined: Jul 12, 2005
Posts: 5
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 ]

Thanks,<br />Jiju
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24183
    
  34

Are you sure the Java program is closing all the files it opens for reading?

Are you sure neither the shell script nor the Java program has the CD as its current working directory?


[Jess in Action][AskingGoodQuestions]
Craig Taylor
Ranch Hand

Joined: Jul 17, 2008
Posts: 64
It sounds like you may be running the java application from the drive - in which case it will be locked until the application terminates.

Using 'lsof' should give you a list of all open files from which you can grep for your cd drive.

- Ack, ignore - I had not read your post in enough detail.
[ July 17, 2008: Message edited by: Craig Taylor ]
Andrew Monkhouse
author and jackaroo
Marshal Commander

Joined: Mar 28, 2003
Posts: 11404
    
  81

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".

Regards, Andrew


The Sun Certified Java Developer Exam with J2SE 5: paper version from Amazon, PDF from Apress, Online reference: Books 24x7 Personal blog
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Shell program locking up CD Drive
 
Similar Threads
Need unix shell script Help
Is there any way to execute a Linux command from Java without fork-ing?
Get the UNIX process ID of the java program
Java and Shell scripts
How to install jdk on linux?