Java - (android) Využít proces po spláchnutí jeho OutputStream

hlasů
47

im snaží se to udělat na Android:

Process p = Runtime.getRuntime().exec(sh);

   DataOutputStream out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

   out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

Podruhé jsem spustit out.writeBytes (); , Jsem si java IOException: „Špatné číslo souboru“. Moje aplikace se musí vykonat několik původních programů, ale vždy použít stejný postup. Každý, kdo ví, proč to nefunguje?

Položena 28/08/2010 v 13:01
uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Voláte-li out.close(), bude to automaticky zavolá close()na ouputstream svého procesu.

Pokaždé, když budete volat p.getOutputStream()vám dostat stejné OutputStream, na druhém užívání ven, p.getOutputStream()vrací již uzavřena OutputStream.

V podstatě se svým kódem, nemáte opravdu potřeba uzavřít první DataOutputStream.

Prameny :

Odpovězeno 28/08/2010 v 13:12
zdroj uživatelem

hlasů
1

Všimněte si, že skořápka není součástí veřejné SDK (všimněte si, že není popsána kdekoliv v dokumentaci SDK), takže tento kód je ve skutečnosti spoléhat na soukromých API.

Také to vás staví mimo normální aplikačního modelu - nemáme žádnou záruku, co se stane s postupem jste vidlicové a není řízena platformy. To může zabít kdykoliv.

To je také velmi neefektivní způsob, jak dělat věci, ve srovnání s tím, co příkaz dělá ve svém vlastním procesu. A začíná samostatný proces pro příkaz nenechá to dělat nic víc, než je to možné, protože to stále běží jako uid.

Takže v podstatě ... na 99,99% aplikací, prosím, nedělej to. Pokud píšete terminálu app ... no jo, tak nadšenci se bude starat o tom tak jako tak, a to nebude k ničemu, protože to běží jako uid, ale v pořádku. Ale jinak, prosím ne. :)

Odpovězeno 28/08/2010 v 19:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more