Erro em Process, OutputStream e mais erros

Oi pessoal.
Eu estou tentando executar um comando Linux, receber o resultado e mandar a senha de root.

try
 {
 Process pro = Runtime.getRuntime().exec( "/usr/bin/./su" );           

 BufferedReader stdInput = new BufferedReader( new InputStreamReader(         pro.getInputStream() ) );

 String pass = ((String)JOptionPane.showInputDialog( null, "Type your root password"));
 stdInput.write( pass, 0, pass.length() ); //1

 OutputStream pwd = pro.getOutputStream();

 pwd.write( ((String)JOptionPane.showInputDialog( null, "Type the root password.")).getBytes() ); //2
 }
 catch( IOException io )
 { 
  io.printStackTrace();
 }   

E o meu problema é justamente por que eu nã sei em qual dos dois eu devo escrever já que deu erro das duas maneiras que eu tentei.

Alguém poderia me indicar algo pra estudar ou corrigir meu problema ?

Obrigado.

cara, eu dei uma lida rapida no seu post, bem por cima.
mas me parece que pra enviar dados vc usa out (out.write()) e recebe com input (input.read()).
será ke o erro nao ta ± por ai? ou pelo menos um dos erros?
cola ai pra gente as exceptions que tao rolando…

[]s

Output -> Escreva (saida DO SEU PROGRAMA)
Input -> Leia (entrada de dados NO SEU PROGRAMA)

Já tive muitos problemas com interação de aplicativos CLI no Linux… as vezes funciona no Eclipse mas não em um terminal ou no xterm.

[]s

Pois é galera… eu arrumei o código e ele ficou assim:

try
{
 Process pro = Runtime.getRuntime().exec( "/usr/bin/sudo /usr/sbin/iptables -L" );          
 BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( pro.getOutputStream() ) );
 String pass = ((String)JOptionPane.showInputDialog( null, "Root Password" ));     
 OutputStream out = pro.getOutputStream();
     
 bw.write(pass); //1
 out.write( pass.getBytes() ); //2
}
catch( IOException io )
{ 
 io.printStackTrace();
}   

Agora ele não levanta nenhuma Exception, mas também não coloca a senha quando é requisitado. Eu li em um tutorial da Sun que esse Stream é melhor que seja bufferizado, mas eu fiz e não deu nenhum output.

Rapaz, das duas uma… ou é muito difícil fazer isso (com meu intelecto de ameba), ou está beirando o impossivel. hehe

Valeu.