SoldatoSemplice
14-10-2008, 15:58
Ciao a tutti, avrei una domanda un pò particolare, mettete il caso che io faccio un programma che ha tre diversi processi: magari uno fà una stampa sullo standard output, un altro legge dalla seriale e un'altro scrive su un file con fprintf, e io voglio tipo modificare la posizione di uno dei tre nello schedulatore o modificare la priorita ad esempio di quello che legge dalla seriale in una priorità più alta, come faccio a distinguere una volta che mi trovo dentro il mio eseguibile dove fare la fork o la SetPriority per aumentare la priorità del lettore della seriale?
Spero di essermi spiegato, in pratica come discrimino i processi dall'interno del sorgente?
Ah aspetta mi pareva di averlo letto; secondo voi potrebbe essere una cosa del genere: Uso GetPid e GetPPID per ottenere PID e PPID del padre del processo che legge la seriale e poi agganciandomi al suo PID gli aumento la priorità o lo forko, potrebbe essere?
Al momento non ho esempi, ma anche qualora fosse così sorge un altro dubbio, come riesco a scoprire il PID del processo che legge la seriale? In pratica io Con GetPid ottengo il PID di uno dei processo ma come discrimino se è il processo che legge?
Quando apro la porta seriale con
Codice:
fd = open("/dev/ttyS0"......
percaso il nome del processo che genero coincide con il descrittore del file, cioè fd?
In questo modo potrei fare una cosa del tipo: GetPid(fd,...."qualcosa".....) ed ottenere il PID del processo adibito a leggere la seriale?
A quel punto, forkarlo o schedularlo non dovrebbe essere un problema, potrei fare:
Codice:
pid_t pid2,pid3;
pid2=GetPid(fd,...."qualcosa".....);
pid2=fork();
Potrebbe funzionare tipo in questo modo?
E soprattutto posso usare un descrittore di file per identificare un processo?
Grazie mille
Leonardo
Spero di essermi spiegato, in pratica come discrimino i processi dall'interno del sorgente?
Ah aspetta mi pareva di averlo letto; secondo voi potrebbe essere una cosa del genere: Uso GetPid e GetPPID per ottenere PID e PPID del padre del processo che legge la seriale e poi agganciandomi al suo PID gli aumento la priorità o lo forko, potrebbe essere?
Al momento non ho esempi, ma anche qualora fosse così sorge un altro dubbio, come riesco a scoprire il PID del processo che legge la seriale? In pratica io Con GetPid ottengo il PID di uno dei processo ma come discrimino se è il processo che legge?
Quando apro la porta seriale con
Codice:
fd = open("/dev/ttyS0"......
percaso il nome del processo che genero coincide con il descrittore del file, cioè fd?
In questo modo potrei fare una cosa del tipo: GetPid(fd,...."qualcosa".....) ed ottenere il PID del processo adibito a leggere la seriale?
A quel punto, forkarlo o schedularlo non dovrebbe essere un problema, potrei fare:
Codice:
pid_t pid2,pid3;
pid2=GetPid(fd,...."qualcosa".....);
pid2=fork();
Potrebbe funzionare tipo in questo modo?
E soprattutto posso usare un descrittore di file per identificare un processo?
Grazie mille
Leonardo