digitalmars.D.learn - running a command in a directory using std.process
- Benjamin Thaut (10/10) Oct 23 2013 As far as I can tell std.process can only run commands in the working
- simendsjo (3/11) Oct 24 2013 Isn't it possible to execute a command like "cd subdir && dmd"?
- Benjamin Thaut (6/18) Oct 24 2013 Thanks. That works. It still would be nice if std.process had this in
- Timothee Cour (13/35) Oct 24 2013 +1
- Benjamin Thaut (7/19) Oct 24 2013 Well at least the windows API call CreateProcess already has a parameter...
As far as I can tell std.process can only run commands in the working directory of the currently executing function. I want to execute a certain program inside a subdirectory on windows and can't get it to work: myproject |- subdir So my executable has "myproject" as working directory. And I want to execute "dmd" with "subdir" as working directory. -- Kind Regards Benjamin Thaut
Oct 23 2013
On Thursday, 24 October 2013 at 06:25:40 UTC, Benjamin Thaut wrote:As far as I can tell std.process can only run commands in the working directory of the currently executing function. I want to execute a certain program inside a subdirectory on windows and can't get it to work: myproject |- subdir So my executable has "myproject" as working directory. And I want to execute "dmd" with "subdir" as working directory.Isn't it possible to execute a command like "cd subdir && dmd"?
Oct 24 2013
Am 24.10.2013 09:06, schrieb simendsjo:On Thursday, 24 October 2013 at 06:25:40 UTC, Benjamin Thaut wrote:Thanks. That works. It still would be nice if std.process had this in its API. -- Kind Regards Benjamin ThautAs far as I can tell std.process can only run commands in the working directory of the currently executing function. I want to execute a certain program inside a subdirectory on windows and can't get it to work: myproject |- subdir So my executable has "myproject" as working directory. And I want to execute "dmd" with "subdir" as working directory.Isn't it possible to execute a command like "cd subdir && dmd"?
Oct 24 2013
+1 this is a command use case. Further,relying on shell such as cd subdir && foo is fragile: if it fails, we're not sure whether it's because it couldn't cd to subdir or because of foo. Woudl the following be as efficient? system_in_dir(string dir, string action){ auto path=getcwd scope(exit) chdir(path) chdir(dir) system(action) } On Thu, Oct 24, 2013 at 12:43 AM, Benjamin Thaut <code benjamin-thaut.de>wrote:Am 24.10.2013 09:06, schrieb simendsjo: On Thursday, 24 October 2013 at 06:25:40 UTC, Benjamin Thaut wrote:Thanks. That works. It still would be nice if std.process had this in its API. -- Kind Regards Benjamin ThautAs far as I can tell std.process can only run commands in the working directory of the currently executing function. I want to execute a certain program inside a subdirectory on windows and can't get it to work: myproject |- subdir So my executable has "myproject" as working directory. And I want to execute "dmd" with "subdir" as working directory.Isn't it possible to execute a command like "cd subdir && dmd"?
Oct 24 2013
Am 24.10.2013 19:03, schrieb Timothee Cour:+1 this is a command use case. Further,relying on shell such as cd subdir && foo is fragile: if it fails, we're not sure whether it's because it couldn't cd to subdir or because of foo. Woudl the following be as efficient? system_in_dir(string dir, string action){ auto path=getcwd scope(exit) chdir(path) chdir(dir) system(action) }Well at least the windows API call CreateProcess already has a parameter which you can use to specify the working directory. Its just not exposed in the implementation of std.process. I don't know how things are on linux though. Kind Regards Benjamin Thaut
Oct 24 2013