Index: sdk/lib/io/process.dart |
diff --git a/sdk/lib/io/process.dart b/sdk/lib/io/process.dart |
index a977b319b6173dd8bfe70d0cf62bfb952217c7ad..e64d064307765acca00005d1599a098038426361 100644 |
--- a/sdk/lib/io/process.dart |
+++ b/sdk/lib/io/process.dart |
@@ -100,6 +100,19 @@ void sleep(Duration duration) { |
int get pid => _ProcessUtils._pid(null); |
/** |
+ * Modes for running a new process. |
+ */ |
+enum ProcessStartMode { |
+ /// Normal child process. |
+ NORMAL, |
+ /// Detached child process with no open communication channel. |
+ DETACHED, |
+ /// Detached child process with stdin, stdout and stderr still open |
+ /// for communication with the child. |
+ DETACHED_WITH_STDIO |
+} |
+ |
+/** |
* The means to execute a program. |
* |
* Use the static [start] and [run] methods to start a new process. |
@@ -248,7 +261,7 @@ abstract class Process { |
* Users must read all data coming on the [stdout] and [stderr] |
* streams of processes started with [:Process.start:]. If the user |
* does not read all data on the streams the underlying system |
- * resources will not be freed since there is still pending data. |
+ * resources will not be released since there is still pending data. |
* |
* The following code uses `Process.start` to grep for `main` in the |
* file `test.dart` on Linux. |
@@ -258,12 +271,25 @@ abstract class Process { |
* stderr.addStream(process.stderr); |
* }); |
* |
- * If [detach] is `true` a detached process will be created. A |
- * detached process has no connection to its parent, and can |
- * keep running on its own when the parent dies. The only |
+ * If [mode] is [ProcessStartMode.NORMAL] (the default) a child |
+ * process will be started with `stdin`, `stdout` and `stderr` |
+ * connected. |
+ * |
+ * If `mode` is [ProcessStartMode.DETACHED] a detached process will |
+ * be created. A detached process has no connection to its parent, |
+ * and can keep running on its own when the parent dies. The only |
* information available from a detached process is its `pid`. There |
- * is no connection to its `stdin`, `stdout` or `stderr` nor will its |
- * exit code become available when it terminates. |
+ * is no connection to its `stdin`, `stdout` or `stderr`, nor will |
+ * the process' exit code become available when it terminates. |
+ * |
+ * If `mode` is [ProcessStartMode.DETACHED_WITH_STDIO] a detached |
+ * process will be created where the `stdin`, `stdout` and `stderr` |
+ * are connected. The creator can communicate with the child through |
+ * these. The detached process will keep running even if these |
+ * communication channels are closed. The process' exit code will |
+ * not become available when it terminated. |
+ * |
+ * The default value for `mode` is `ProcessStartMode.NORMAL`. |
*/ |
external static Future<Process> start( |
String executable, |
@@ -272,7 +298,7 @@ abstract class Process { |
Map<String, String> environment, |
bool includeParentEnvironment: true, |
bool runInShell: false, |
- bool detach: false}); |
+ ProcessStartMode mode: ProcessStartMode.NORMAL}); |
/** |
* Starts a process and runs it non-interactively to completion. The |