I have small program that need to be executed every 5 minutes.
For now, I have shell script that perform that task, but I want to provide for user ability to run it without additional scripts via key in CLI.
What is the best way to achieve this?
I have small program that need to be executed every 5 minutes.
For now, I have shell script that perform that task, but I want to provide for user ability to run it without additional scripts via key in CLI.
What is the best way to achieve this?
I presume you'll want something like that (more or less pseudocode):
import Control.Concurrent (forkIO, threadDelay)
import Data.IORef
import Control.Monad (forever)
main = do
    var <- newIORef 5000
    forkIO (forever $ process var)
    forever $ readInput var
process var = do
    doActualProcessing
    interval <- readIORef var
    _ <- threadDelay interval
readInput var = do
    newInterval <- readLn
    writeIORef var newInterval
If you need to pass some more complex data from the input thread to the processing thread, MVars or TVars could be a better choice than IORefs.