LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   How can I call a C program in a Shell Script from Java (http://www.linuxquestions.org/questions/programming-9/how-can-i-call-a-c-program-in-a-shell-script-from-java-763630/)

habibur 10-22-2009 01:48 AM

How can I call a C program in a Shell Script from Java
 
Hi all,
I have a C program namely NetLibExample.c.I have compiled it to get a NetLibexample executable in RHEL5. It is successfully running from the terminal itself by the syntax: ./NetLibExample
I have written a shell script to call the same.The shell script is test.sh

test.sh
cd /working/AVClient
mkdir habib_test
./NetLibExample
echo "1 image captured"

This shell is running successfully and giving me the output( a new folder habib_test and output from the C program)

I have to call the shell script from Java program.The program is like this.
TestShell.java
public class TestShell {
public static void main(String[] args) {
try{
System.out.println("I am here to test the shell correctly");
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("/working/test.sh");
int exitVal = proc.waitFor();

}catch(Exception e){
e.printStackTrace();
System.out.println("Exception caught.........."+e.toString());
}
}
}


But when I am trying to call the shell from Java,shell is runnin g properly as I am getting the new folder created from the shell.The java program is giving a exception:
java.lang.IllegalThreadStateException: process hasn't exited
at java.lang.UNIXProcess.exitValue(UNIXProcess.java:172)
at TestShell.main(TestShell.java:27)
Exception caught............java.lang.IllegalThreadStateException: process hasn't exited

Please help me.Thanks in advance.

TB0ne 10-22-2009 08:57 PM

Quote:

Originally Posted by habibur (Post 3728136)
Hi all,
I have a C program namely NetLibExample.c.I have compiled it to get a NetLibexample executable in RHEL5. It is successfully running from the terminal itself by the syntax: ./NetLibExample
I have written a shell script to call the same.The shell script is test.sh

test.sh
cd /working/AVClient
mkdir habib_test
./NetLibExample
echo "1 image captured"

This shell is running successfully and giving me the output( a new folder habib_test and output from the C program)

But when I am trying to call the shell from Java,shell is runnin g properly as I am getting the new folder created from the shell.The java program is giving a exception:
java.lang.IllegalThreadStateException: process hasn't exited
at java.lang.UNIXProcess.exitValue(UNIXProcess.java:172)
at TestShell.main(TestShell.java:27)
Exception caught............java.lang.IllegalThreadStateException: process hasn't exited

Please help me.Thanks in advance.

Your shell script isn't complete. Try:
Code:

#!/bin/bash
mkdir /working/AVClient/habib_test
/full/path/to/NetLibExample 2>&1&
echo "1 image captured"

Try to look up some shell scripting tutorials, which may point you in a better direction.

Tinkster 10-23-2009 03:56 PM

Moved: This thread is more suitable in <PROGRAMMING> and has been moved accordingly to help your thread/question get the exposure it deserves.

paulsm4 10-24-2009 02:09 AM

You might also want to look here:

http://www.javaworld.com/community/node/3585

:D


All times are GMT -5. The time now is 01:21 PM.