Olá!

dando uma googlada inferi que está usando Clisp. Bom, primeiro vai a solulão
em SBCL, que é a distribuição que eu uso.

> (run-program "/bin/ps" '("aux") :output *standard-output*)

para imprimir no terminal ou

> (with-output-to-string (s)
      (run-program "/bin/ps" '("aux") :output s))

para salvar o valor numa string.

Não tenho Clisp instalado, mas lendo a documentação, vi que
run-shell-command "imprime no terminal" (default), retorna um objeto do tipo
"input stream" ou nada, dependendo se o valor de :output é :terminal,
:stream ou nil, respectivamente.

No seu caso, a saída do comando é imprimida no terminal. O que é salvo em
*string* é o valor de retorno de "ps aux".

Uma possível solução seria:

> (defun stream->string (stream)
      (with-output-to-string (s)
        (loop for line = (read-line stream nil nil)
            while line do (write-line line s))))

> (setf *string* (stream->string (run-shell-program "ps aux" :output
:stream))

[]'s

2011/4/6 Cooler_ <[email protected]>

> peço ajuda ao pessoal de modo sanar meu problema
> estou tentando pegar uma saída de um comando e atribuir em uma
> variável
>
> veja que estou fazendo:
>
> (setq *string* (run-shell-command "ps aux") )
> (format t "~s" *string*)
>
> retorno;
>
> 0
> NIL
>
> estou precisando guardar o resultado de "ps aux" numa string ou
> vector.
>
> se alguém poder ajudar agradeço
>
> Cheers
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lisp-br" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/lisp-br?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/lisp-br?hl=en.

Responder a