Kec? OK. Povíte mi tedy, jak z aplikace na obecném UNIX(-like) systému zjistím, jaké deamony v systému jsou, jestli konkrétní daemon běží, a jak případně ho spustím? O API vím akorát na Solarisu, a bohužel se týká jen služeb, které jsou pro to API psané.
Ad špinavý shell out, co je špatného na fork nebo exec - když potřebujete v aplikaci udělat nějakou akci, můžete A. zavolat API, nebo B. spustit shell a v něm příkaz, který tu akci provede. V případě A je to rychlá a nenáročná akce. V případě B musíte spustit hned dva procesy, je to pomalé a paměťově náročné.
Na fork/exec je špatná vysoká spotřeba paměti. Pokud máte aplikaci s 1GB alokované paměti, pro fork/exec (abyte si například spustil nějakou utilitu, protože chybí API) potřebujete další 1GB paměti. To je nakonec primárním důvodem, proč Linux používá memory over-commiting a OOM Killer. To je mimochodem snad nejhorší možné řešení - koukněte na Windows, Solaris, AIX.