Não consigo encontrar nada nos documentos sobre uma maneira de fazer isso diretamente, mas você pode criar funções para fazer isso por conta própria com relativa facilidade, com a ajuda de popen
.
Se você quiser pegar toda a saída em uma lista de strings, você pode fazer isso:
define grab_output (command)
{
variable fp, lines;
fp = popen (command, "r");
if (fp == NULL)
throw OpenError, "Failed to popen ($command)";
lines = fgetslines(fp);
() = fclose (fp);
return lines;
}
Se você quiser processar cada linha conforme ela está chegando, usar algo assim provavelmente seria melhor:
define display_output (command)
{
variable fp, line;
fp = popen (command, "r");
if (fp == NULL)
throw OpenError, "Failed to popen ($command)";
foreach line (fp) using ("line")
{
printf("% 5d - %s", strlen(line), line);
}
() = fclose (fp);
}
Uso:
variable line;
variable lines = grab_output("/usr/bin/cal");
foreach line (lines)
{
printf("stdout: %s", line);
}
display_output("cat t.sl");
Aviso: isso foi simplesmente reunido a partir de exemplos no guia S-Lang , na verdade não conhece a língua.