官术网_书友最值得收藏!

Making a system call

A fairly common use case is that you need to call another program from your Dart app, or an operating system command. For this, the abstract class Process in the dart:io package is created.

How to do it...

Use the run method to begin an external program as shown in the following code snippet, where we start Notepad on a Windows system, which shows the question to open a new file tst.txt (refer to make_system_call\bin\ make_system_call.dart):

import 'dart:io';

main() {
  // running an external program process without interaction:
 Process.run('notepad', ['tst.txt']).then((ProcessResult rs){
 print(rs.exitCode);
    print(rs.stdout);
    print(rs.stderr);
  });
}

If the process is an OS command, use the runInShell argument, as shown in the following code:

Process.run('dir',[], runInShell:true).then((ProcessResult 
rs)
{ … }

How it works...

The Run command returns a Future of type ProcessResult, which you can interrogate for its exit code or any messages. The exit code is OS-specific, but usually a negative value indicates an execution problem.

Use the start method if your Dart code has to interact with the process by writing to its stdin stream or listening to its stdout stream.

Note

Both methods work asynchronously; they don't block the main app. If your code has to wait for the process, use runSync.

主站蜘蛛池模板: 瑞金市| 南昌县| 历史| 长宁县| 石渠县| 海淀区| 鄂尔多斯市| 阆中市| 邛崃市| 措美县| 吴堡县| 宝兴县| 土默特右旗| 阿鲁科尔沁旗| 罗源县| 沧州市| 万州区| 通榆县| 陆良县| 云霄县| 迭部县| 蚌埠市| 雅安市| 海晏县| 巢湖市| 青川县| 鄂托克前旗| 濮阳市| 江北区| 元氏县| 伊金霍洛旗| 凤翔县| 花莲县| 油尖旺区| 通州市| 含山县| 汝州市| 高州市| 平江县| 安顺市| 儋州市|