Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: sunamo 31 Října 2009, 01:23:21

Název: Mono - jak poslat příkaz na terminál z .NETu
Přispěvatel: sunamo 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..
Název: Re: Mono - jak poslat příkaz na terminál z .NETu
Přispěvatel: nettezzaumana 31 Října 2009, 01:29:27
imho to volani forkne subshell, vykona prikaz a skonci .. takze proto si myslis ze se to nevykonalo
Název: Re: Mono - jak poslat příkaz na terminál z .NETu
Přispěvatel: vlabra 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");
Název: Re: Mono - jak poslat příkaz na terminál z .NETu
Přispěvatel: sunamo 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.