Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
de giver faktisk svaret i linket If you execute the program directly, you won't get any of the shell-implemented substitutions, such as ~myself -> /home/myself, or expansion of environment variables such as $PATH. If you want these to work, you'll have to exec() the shell itself, usually "/bin/sh", passing the actual program you wish to run as an option (-e, IIRC).
at de skriver, at ENV ikke kommer med, ved brug af exec() har jo ikke nogen påvirkning mht. om processen kan gå i deadlock - det betyder bare at variabler, som er sat i Enviroment (f.eks. PATH) ikke er tilgængelige
Hvad de skriver senere er dog mere interessant - især at exec() ikke fork'er en ny child-process - så hvis man har det ok med at ens java-program kører videre, mens en anden process udfører den ønskede shell-kommando, så kan opnå det ved at lave en Wrapper-klasse, som vil udføre ens shell-kommando i en selvstændig tråd...
Men hvis man alligevel skal vente på resultatet af den shell-kommado (om det være sig retur-koden - eller at processen f.eks. skal opdatere/oprette en fil), så får man ikke meget ud af, at køre det i en ny process...
Det er sikkert også "enkelt nok" når man først kommer igang med det ... samtidig skal man jo huske, at Javas kommandoer til interaktion med det omliggende enviroment (kommandoprompt osv.) bliver nød til at foregå på en stykke-for-stykke metode, da alle operativsystemer (med alle deres forskelligheder) skal kunne understøttes... --- Og at køre en kommando og derefter læse dens output i konsollen bliver nød til at være to forskellige ting ... Der findes jo f.eks. operativsystemer som ikke naturligt har nogen konsol ....
import java.io.*; /** * Created by IntelliJ IDEA. * User: loadet * Date: 24-05-2003 * Time: 01:35:57 * To change this template use Options | File Templates. */ public class bla { public static void main(String[] args) throws IOException, InterruptedException { Process p = Runtime.getRuntime().exec( "df" );
p.waitFor();
BufferedReader stdout = new BufferedReader( new InputStreamReader( p.getInputStream() ) ); BufferedReader stderr = new BufferedReader( new InputStreamReader( p.getErrorStream() ) );
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.