Dart ProcessResult tutorial shows how to work with process execution results in Dart using the ProcessResult class.
last modified April 4, 2025
The ProcessResult class in Dart represents the result of running a process. It provides access to exit code, stdout, stderr, and process information.
ProcessResult is returned by functions like Process.run and Process.runSync. It’s part of Dart’s dart:io library.
ProcessResult is an immutable object containing process execution results. It’s created when a process completes and cannot be modified.
Key properties include exitCode, stdout, stderr, and pid. These provide complete information about process execution and output.
This example shows basic process execution and result inspection.
main.dart
import ‘dart:io’;
void main() async { var result = await Process.run(’ls’, [’-l’]);
print(‘Exit code: ${result.exitCode}’); print(‘Stdout: ${result.stdout}’); print(‘Stderr: ${result.stderr}’); }
We run the ’ls -l’ command and inspect its results. The ProcessResult object contains all execution details including output streams and exit status.
$ dart main.dart Exit code: 0 Stdout: total 8 -rw-r–r– 1 user staff 123 Apr 4 10:00 main.dart
Stderr:
This example demonstrates error handling with ProcessResult.
main.dart
import ‘dart:io’;
void main() async { var result = await Process.run(‘grep’, [‘pattern’, ’nonexistent.txt’]);
if (result.exitCode != 0) { print(‘Command failed with exit code ${result.exitCode}’); print(‘Error output: ${result.stderr}’); } else { print(‘Output: ${result.stdout}’); } }
We check the exitCode to determine command success. Non-zero exit codes typically indicate errors, with details in stderr. This pattern is common for robust process handling.
$ dart main.dart Command failed with exit code 2 Error output: grep: nonexistent.txt: No such file or directory
This example shows parsing command output from ProcessResult.
main.dart
import ‘dart:io’;
void main() async { var result = await Process.run(‘date’, [’+%Y-%m-%d’]);
if (result.exitCode == 0) { var date = (result.stdout as String).trim(); print(‘Current date: $date’); } else { print(‘Failed to get date’); } }
We execute the date command and parse its output. The stdout is cast to String and trimmed for clean processing. This demonstrates working with command output.
$ dart main.dart Current date: 2025-04-04
This example shows processing multiple commands and their results.
main.dart
import ‘dart:io’;
void main() async { var commands = [ [’echo’, ‘Hello Dart’], [‘uname’, ‘-a’], [‘whoami’] ];
for (var cmd in commands) { var result = await Process.run(cmd[0], cmd.sublist(1)); print(‘Command: ${cmd.join(’ ‘)}’); print(‘Exit code: ${result.exitCode}’); print(‘Output: ${(result.stdout as String).trim()}’); print(’—’); } }
We execute multiple commands in sequence and process each result. The example shows handling different command types and their outputs systematically.
This example demonstrates handling binary output from processes.
main.dart
import ‘dart:io’;
void main() async { var result = await Process.run(’ls’, [’-l’], stdoutEncoding: null);
if (result.exitCode == 0) { var output = result.stdout as List<int>; print(‘Binary output length: ${output.length} bytes’); print(‘First 10 bytes: ${output.take(10)}’); } }
By setting stdoutEncoding to null, we get raw bytes instead of strings. This is useful for binary data processing. The output is available as List<int>.
$ dart main.dart Binary output length: 123 bytes First 10 bytes: (116, 111, 116, 97, 108, 32, 56, 13, 10, 45)
Check exit codes: Always verify process success
Handle output: Process both stdout and stderr
Use encoding: Specify correct encoding for text output
Timeout: Consider adding timeouts for long-running processes
Cleanup: Ensure processes are properly terminated
Dart ProcessResult Documentation
This tutorial covered Dart’s ProcessResult class with practical examples showing process execution, output handling, and error management in Dart applications.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all Dart tutorials.