On 10/29/13 11:34 AM, Vladimir Panteleev wrote:
On Tuesday, 29 October 2013 at 03:44:37 UTC, Andrei Alexandrescu wrote:
There is no convenient function to replace the running process with a
new one. There used to be the exec() family of functions, which
conveniently use string[] for arguments etc., but now the doc says:
In addition to what Lars said, I'd like to add that replacing the
current process is a rather platform-dependent trick. While process
creation in POSIX is done by forking then replacing the forked process
with a new one, on Windows it's the other way around - created processes
are always isolated from the current one, and Windows implementations of
this function simply emulate the behavior by creating a new process,
then terminating the current one.
I believe one of the goals of designing the new std.process is to create
an interface that would be as platform-independent as possible. This
meant that platform-specific functionality (which, incidentally, seems
to be rarely used in practice) was abstracted away or scheduled for
removal, delegating the task to such platform-specific (= low-level)
tasks to C bindings in std.c.*, core.sys.* and core.stdc.*.
That argument doesn't seem to hold water. So if Windows does it less
efficiently than Linux, we should... remove the option altogether so we
level the field?
Andrei