A che livello sei con la programmazione in C?
Te la cavi bene?
E con i sistemi UNIX come te la cavi? Hai mai usato il comando man? Lo usi regolarmente e sai interpretare le sue pagine?
Una possibilità per fare quello di cui parli è l'utilizzo delle code di messaggi. Si tratta di chiamate di sistema che servono proprio a scambiare messaggi tra diversi processi.
Te lo devi studiare un po', perché non è il massimo della semplicità (una volta che hai capito come funziona, non è difficile, ma prima devi capire il meccanismo e i suoi limiti).
In particolare le chiamate di sistema che possono interessarti sono:
msgget, msgctl, msgsnd, msgrcv.
Con questi puoi creare un server (l'applicazione principale, che contiene il nocciolo del tuo programma e riceve i messaggi dai client) e dei client (che inviano i comandi).
Quello che farai quindi sarà mettere il server in lettura sulla coda, il client invece sarà un semplice programma che riceve un parametro, apre la coda di messaggi, invia sulla coda il parametro che gli è stato dato e finisce qui il suo lavoro.
Edit:Ci tengo a precisare che la questione di cui hai parlato:
Daniele78 ha scritto:Ho letto in giro che quando vengono creati programmi Linux si inizia a creare l' applicazione funzionante da console e poi la gui.
è vera. Ma il motivo per cui questa vale è che gli ambienti UNIX-like funzionano prevalentemente da terminale, perché hanno un terminale
eccezionale.
Sviluppare il software per il terminale ti permetterà di usarlo anche qualora il server grafico (X con GDM, KDM o altro) dovesse non essere disponibile. Aggiungere separatamente l'interfaccia grafica renderà il programma utilizzabile sia da terminale sia da interfaccia grafica.
Se però il programma che stai scrivendo ha un uso solamente grafico (hai parlato di video), allora probabilmente diventa inutile complicarsi la vita facendo questa separazione, se poi tanto il programma non potrebbe essere usato da terminale.
Aggiungo un'ultima nota: il fatto che un programma sia scritto per il terminale non implica che non possa avere una grafica o che non possa mostrare immagini e video; grazie al framebuffer è possibile mostrare immagini con risoluzione normale (e non quella limitata che c'è spesso nel terminale).
Però non credo che tu stia sviluppando il software per funzionare in queste modalità, perciò probabilmente la cosa migliore per te è quello di fare un unico programma, direttamente con l'interfaccia grafica.Ma ciò non toglie che tu possa implementare comunque la parte con le code di messaggi, che potrebbe essere utile per interagire con il tuo software dall'esterno (tramite script o altri programmi). Anzi, se hai voglia di implementarla, te lo consiglio, perché è una funzionalità molto utile.