Как сделать системный вызов и прочитать стандартный вывод, в D? - PullRequest
7 голосов
/ 29 июля 2011

Я подумал попробовать использовать D для некоторых сценариев системного администрирования, которые требуют высокой производительности (для сравнения производительности с python / perl и т. Д.).

Я не могу найти пример в руководствах, которые я просмотрел до сих пор (dsource.org и т. Д.), О том, как сделать системный вызов (т.е. вызвать другое программное обеспечение) и получить его вывод из stdout, однако?

Если я пропустил это, может ли кто-нибудь указать мне правильные документы / учебное пособие или сразу же дать ответ?

Ответы [ 2 ]

12 голосов
/ 29 июля 2011

Ну, тогда я, конечно, нашел его: http://www.digitalmars.com/d/2.0/phobos/std_process.html#shell (Версия с использованием библиотеки Tango здесь: http://www.dsource.org/projects/tango/wiki/TutExec).

Предыдущая версия - та, которая работает с D 2.0 (таким образом, текущий компилятор dmd, который поставляется с ubuntu).

Я получил этот крошечный пример для работы, скомпилированный с помощью dmd:

import std.stdio;
import std.process;

void main() {
  string output = shell("ls -l");
  write(output);
}
0 голосов
/ 14 мая 2016

std.process был обновлен с тех пор ... новая функция spawnShell

import std.stdio;
import std.process;

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