2011-05-20 21 views
7

Hola necesito para leer la línea de comandossalida estándar después de ejecutar un comando Haskell, sé que hay dos módulos para ejecutar comandos del sistema: System.Cmd y System.Processlectura de entrada de un comando del sistema en Haskell

pueden Alguien me muestra un ejemplo simple de cómo ejecutar las funciones System.Process?

aquí es un ejemplo de lo que tengo que hacer (Sé que hay System.Directory a hacer eso, pero pensé que esto es un buen ejemplo):

  1. ejecutar un comando del sistema como ls -a
  2. ahora yo no desea que el usuario vea la salida
  3. la salida sólo debería ser accesible en mi programa para validarlo

cómo puedo hacer eso?

+1

Creo que quiere decir leer la salida * de un comando, no leer la * línea de comando *. La línea de comando significa el nombre del comando que se está ejecutando y sus argumentos. –

+2

La edición de la pregunta es confusa. Interpreté el original como preguntando por leer el nuevo proceso '** estándar fuera ** en lugar de ** en **. – Anthony

Respuesta

18
import System.Process 
test = readProcess "ls" ["-a"] "" 

referimos a la documentation para detalles de uso.

+0

¿Será esto plataforma independiente (trabajo para todos los sistemas operativos)? – Tarrasch

+3

@Tarrasch El comando "ls" por supuesto no es independiente de la plataforma, pero readProcess debería ser. La documentación para 'System.Process' menciona varias áreas donde el comportamiento de Windows se desvía de las plataformas basadas en Unix. – Anthony

+0

Es mejor usar [readProcessWithExitCode] (http://stackoverflow.com/a/37108680/1100107). –

Cuestiones relacionadas