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
-
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..
-
imho to volani forkne subshell, vykona prikaz a skonci .. takze proto si myslis ze se to nevykonalo
-
Pokud chcete předávat spouštěnému procesu argumenty tak použijte:
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:
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:
System.IO.Directory.SetCurrentDirectory("/home/nekdo/neco");
-
"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
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.