Si estoy en una situación en la que necesito ejecutar comandos externos en secuencia, ¿cuál es la mejor solución?Haskell: Ejecutar comandos externos en secuencia estricta
Por ejemplo, tengo dos comandos "make snapshot" y "backup snapshot" El segundo no puede comenzar hasta que se complete el primero. Si guardo ordenadamente esos dos comandos en una sintaxis do, ¿se ejecutarán uno después de otro o debo verificarlos manualmente y asegurarme de que el primero está completo?
Para la comprobación de la terminación manual, es suficiente con usar "sistema" o rawSystem" y examinar su código de salida?
No entiendo plenamente la diferencia entre el 'sistema' y 'funciones' runcommand. Puede alguien me aclara esto. Solo puedo ver que devuelven diferentes valores: código de salida vs proceso handle. ¿Alguna otra diferencia?
¿Prefiero usar "runCommand" para que la secuencia anterior funcione? espere en el mango del proceso?
Gracias.
Gracias por aclarar que para mí.Tiene sentido. –
En su ejemplo, ¿cómo verifica que el primer programa finalizó correctamente antes de ejecutar el segundo? –
@ r.sendecky: 'ExitSuccess <- system" make snapshot "' hace coincidir un patrón en el resultado de la llamada 'system' - asegurándose de que devuelva' ExitSuccess'. Si la coincidencia de patrón falla, se llama [error de IO]] (http://en.wikibooks.org/wiki/Haskell/do_Notation#Translating_the_bind_operator). – rampion