Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Mono - jak poslat příkaz na terminál z .NETu  (Přečteno 1749 krát)

sunamo

  • Návštěvník
  • Příspěvků: 13
    • http://sunamo.aspone.cz
Mono - jak poslat příkaz na terminál z .NETu
« kdy: 31 Října 2009, 01:23:21 »
Potřeboval bych helpnout s jednou maličkostí: Jak se prosím předávájí příkazy při volání Process.Start v Mono. Pokud je některý příkaz bez argumentů, vytiskne se dobře (System.Diagnostics.Process.Start ("pwd",  "");), pokud ale má tak vždy je chyba(už jsem to zkoušel ve mnoha podobách - přes ext. programy, uvozovky, nebo přidat k názvu programu.) Prostě bych rád věděl jak a kde mám napsat do příkazu System.Diagnostics.Process.Start ("cd",  ""); /var/log , aby mi to přešlo na tento adresář..Je to banalita, určitě to tu někdo ví..už tím trávím hodinu a nevím si s tím rady..
http://sunamo.aspone.cz
<a href="http://sunamo.aspone.cz" title="sunamo.aspone.cz - programování, C#, ASP.NET, Články, blog">sunamo.aspone.cz - programování</a>

nettezzaumana

  • Host
Re: Mono - jak poslat příkaz na terminál z .NETu
« Odpověď #1 kdy: 31 Října 2009, 01:29:27 »
imho to volani forkne subshell, vykona prikaz a skonci .. takze proto si myslis ze se to nevykonalo

vlabra

  • Návštěvník
  • Příspěvků: 75
Re: Mono - jak poslat příkaz na terminál z .NETu
« Odpověď #2 kdy: 31 Října 2009, 02:28:29 »
Pokud chcete předávat spouštěnému procesu argumenty tak použijte:
Kód: [Vybrat]
Process.Start("program-na-spusteni", "nejaky_argument druhy_argument");
Pokud ale chcete spustit cd, tak to sice provede cd do nějakého adresáře, ale v jiné konzoli (proces se spustí jako dítě a změny adresáře či systémových proměnných neovlivní rodiče). Pokud chcete trochu polaborovat s procesy, tak můžete zkusit:
Kód: [Vybrat]
ProcessStartInfo info = new ProcessStartInfo ("program-na-spusteni", "arg1 arg2");
info.(milion možností nastavení procesu :))
Process p = Process.Start(info);
Dá se tam nastavit priorita procesu, jestli se zobrazí okno, zachytávání výstupu z procesu, ...
PS: Pokud ale chcete jenom změnit aktuální adresář, tak to se dělá pomocí tohoto:
Kód: [Vybrat]
System.IO.Directory.SetCurrentDirectory("/home/nekdo/neco");

sunamo

  • Návštěvník
  • Příspěvků: 13
    • http://sunamo.aspone.cz
Re: Mono - jak poslat příkaz na terminál z .NETu
« Odpověď #3 kdy: 09 Listopadu 2009, 05:18:06 »
"Pokud ale chcete spustit cd, tak to sice provede cd do nějakého adresáře, ale v jiné konzoli "

Toto mě nenapdlo, jsem to nahradil vaším příkazem
Kód: [Vybrat]
System.IO.Directory.SetCurrentDirectory("/home/nekdo/neco"); a vše už funguje. Totiž se všechny příkazy prováděly na složce Debug programu, ve které nic nebylo. Takže děkuji.
http://sunamo.aspone.cz
<a href="http://sunamo.aspone.cz" title="sunamo.aspone.cz - programování, C#, ASP.NET, Články, blog">sunamo.aspone.cz - programování</a>

 

Provoz zaštiťuje spolek OpenAlt.