【问题标题】:How to make a system call and read the stdout, in D?如何在 D 中进行系统调用并读取标准输出?
【发布时间】:2011-10-16 03:13:48
【问题描述】:

我想尝试将D 用于一些需要高性能的系统管理脚本(用于与 python/perl 等进行性能比较)。

我在目前浏览的教程(dsource.org 等)中找不到有关如何进行系统调用(即调用另一个软件)并从标准输出接收其输出的示例?

如果我错过了,有人可以指点我正确的文档/教程,或者立即提供答案吗?

【问题讨论】:

    标签: d system-calls


    【解决方案1】:

    好吧,那我当然找到了:http://www.digitalmars.com/d/2.0/phobos/std_process.html#shell(此处使用 Tango 库的版本:http://www.dsource.org/projects/tango/wiki/TutExec)。

    以前的版本是与 D 2.0 一起工作的版本(因此是 ubuntu 附带的当前 dmd 编译器)。

    我现在可以使用这个小例子,用 dmd 编译:

    import std.stdio;
    import std.process;
    
    void main() {
      string output = shell("ls -l");
      write(output);
    }
    

    【讨论】:

    • 是的。虽然文档很乱,所以你现在看不到它。这需要修复......
    【解决方案2】:

    std.process 已经更新,因为...新功能是 spawnShell

    import std.stdio;
    import std.process;
    
    void main(){
        auto pid = spawnShell("ls -l");
        write(pid);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多