Presentation laddar. Vänta.

Presentation laddar. Vänta.

Jonny Karlsson 19.2.2008 1 PROCESSPROGRAMMERING Föreläsning 3 (19.2.2008 ) Innehåll: -Namngivna rörledningar.

Liknande presentationer


En presentation över ämnet: "Jonny Karlsson 19.2.2008 1 PROCESSPROGRAMMERING Föreläsning 3 (19.2.2008 ) Innehåll: -Namngivna rörledningar."— Presentationens avskrift:

1 Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar

2 2Jonny Karlsson Namngivna rörledningar Kallas även FIFO:s Kan användas som kommunkationskanal mellan två processer även om dessa inte är ”släkt” med varandra. En FIFO är i själva verket en typ av fil med speciella egenskaper. Dessa syns i katalogträdet som filer men skiljer sej från vanliga filer genom att de har symbolen p framför skyddskoden. En fil kan ej vara öppen och hanteras av många processer samtidigt men det kan däremot en FIFO. Används huvudsakligen för två ändamål i UNIX: för att via rörledningstecken på kommandoraden (|) skicka utdata från en process som indata till en annan process. På så vis behövs inga temporära filer för att skicka data mellan en klient och en server i Klient-Server miljöer

3 3Jonny Karlsson Namngivna rörledningar ATT SKAPA EN NAMNGIVEN RÖRLEDNING Skapas från kommandoraden med UNIX kommandot mknod mknod pipename pSkapar en namngiven rörledning med namnet ”pipename” i innevarnade katalog Skapas i ett C-programm med systemanropet mknod() eller mkfifo() mknod(char *pipename, int mode, int dev); pipenamepekar på objektets (rörledningens) filnamn modedefinierar skyddskoden (nodtyp + rättigheter): 0010ugo devsaknar betydelse (=0) Ex. mknod(”rorledning”, , 0)

4 4Jonny Karlsson Namngivna rörledningar HANTERING AV NAMNGIVNA RÖRLEDNINGAR En namngiven rörledning kan öppnas med open() eller fopen(), precis som en fil. int open(char *objektnamn, int mode) objektnamnpekare på en teckentabell som innehåller filnamnet på rörledningen mode0 – öppna för läsning 1 – öppna för skrivning 2 – öppna för både läsning och skrivning FILE *fopen(const char *objektnamn, const char *mode) moder – öppna för läsning w – öppna för skrivning

5 5Jonny Karlsson Namngivna rörledningar Vid användning av open() kan man med flaggan O_NONBLOCK bestämma vad som händer: Om O_NONBLOCK inte anges som parameter till open() kommer öppning för endast läsning att blockera processen tills någon annan process öppnar samma FIFO för skrivning. Likväl kommer en öppnig för endast skrivning att blockera processen tills någon anna process öppnar samma FIFO för läsning Om flaggan O_NONBLOCK anges som parameter till open() så kommer en öppning för endast läsning att returnera direkt och processen kan fortsätta exekveringen. Om FIFO:n öppnas för skrivning och ingen annan process har öppnat samma FIFO förläsning, kommer felet ENXIO att returneras. 


Ladda ner ppt "Jonny Karlsson 19.2.2008 1 PROCESSPROGRAMMERING Föreläsning 3 (19.2.2008 ) Innehåll: -Namngivna rörledningar."

Liknande presentationer


Google-annonser