PDA

View Full Version : Fork e schedulazione.... su quale processo?


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