Buonasera, avrei un problemino con un programma in C compilato su linux (Ubuntu), in breve è un programma che simula una semplice intelligenza artificiale, ossia riceve in input delle richieste sotto forma di testo (terminate con un punto '.') completamente libere, legge il contenuto, ricerca parole chiave che conosce nel testo immesso e esegue le azioni chiamate,ad esemepio:

output: Cosa posso fare per te?
input: Senti potersti aprirmi opera?.
output:.Ok buona ricerca...
e dopo apre il browser.

E' abbastanza carino, il problema principale è che agisce semplicemente attraverso le chiamate della funzione "system()" perciò il processo generato ha lo stesso pid di quello chiamante e questo è un po' scomodo, dato che le richieste sono a ciclo infinito, cioè posso dare un comando dietro l'altro (finché non chiedo di uscire), ma non posso fare una nuova richiesta fino a quando il processo chiamato non temrina, per continuare la sua esecuzione devo così chiudere il programma aperto con la chiama system() e questo riduce di molto l'utilità del programma.

PEZZO DI CODICE CHE ESEGUE OPERA

Codice PHP:
................
/*ESEGUE OPERA*/
else if(((*AZZ == 0) && (*APP == 4)) || ((*AZZ == 1) && (*APP == 4)))    
{    
   
sleep(1);   
   
printf("Buona ricerca...\n");   
   
system("opera");    
}
 else if((*
AZZ == 4) && (*APP == 4))  
{    
   
sleep(1);    
   
printf("Abbandono il processo\n");    
   
system("killall opera");    

Tanto per chiarire gli "else if"... le parole riconosciute restituiscono un codice, se il programma riconosce una parola come "apri", "aprire","apriresti" ecc.. allora restituirà il valore "1", magari se riconosce "chiud", "chiuderesti" ecc... restituisce un valore "2", questo valore andrà a memorizzarsi nella variabile AZ (azione) puntata dalla variabile *AZZ nel codice sopra, mentre se riconosce una parola che corrisponde ad un applicazione come in questo caso "opera" allora memorizzerà il valore restituito nella variabile AP, puntata sopra da *APP.
alla fine con 2 valori AZIONE - APPLICAZIONE riesce ad eseguire varie operazioni.
In ogni modo non so come scindere il processo chiamato dalla funzione system() da quello chiamante, ossia il programma di IA (che per il momento ho chiamato Turing :-) ).
Vorrei farlo nel modo più semplice possibile dato che i comandi sono veramente tanti, scritti uno in seguito all'altro come mostra il codice sopra.
Grazie.