Met behulp van IPC voor draadloze codering met Intel Galileo (4 / 10 stap)

Stap 4: IPC-objecten maken

Een gedeeld geheugen-object is gemaakt met shmget, terwijl een semafoor semget gebruikt. Beiden moeten een sleutel, vlaggen en één functie-specifieke waarde. Om te controleren op de status van IPC-objecten die u maakt, kunt u een van de volgende opdrachten van Linux voor gedeeld geheugen of semaforen, respectievelijk:

kat /proc/sysvipc/shm
kat /proc/sysvipc/sem

Deze opdrachten zijn zeer nuttig wanneer je probeert om te bepalen wanneer een object is gemaakt of vernietigd. Ook u kunt de sleutel en de ID van het object te zien. Dit helpt de Python-script debuggen aangezien u zeker welke IPC-objecten zijn daadwerkelijk beschikbaar voor Python weet te gebruiken.
Toetsen Elke IPC-object is gemaakt met behulp van een unieke sleutel. Bij een eenvoudige test is het aanvaardbaar een hard gecodeerde sleutel wilt gebruiken, maar buiten dat is het nuttig te beschikken over een functie voor het genereren van sleutels voor u. SysV voorziet de ftok functie voor dit doel. De argumenten zijn een string (de locatie van een bestand) en een int (gebruikt om andere sleutels te genereren). ftok combineert de padnaam en de int (hoewel alleen de minst significante 8 bits worden gebruikt - en moet niet-nul zijn) voor het genereren van een unieke sleutel (de meeste van de tijd). Er is nog steeds de mogelijkheid om te bellen ftok met verschillende argumenten en krijgen dezelfde sleutel. Toegegeven, de kans is klein maar een robuuste oplossing moet omgaan met deze voorwaarde. Dat gezegd zijnde, negeert dit project deze voorwaarde omdat het zal spoedig worden bijgewerkt voor het gebruik van de functies van de POSIX IPC - die altijd unieke sleutels zal terugkeren.
Vlaggen De vlaggen gegeven aan shmget en semget bepalen hoe het wordt gemaakt. IPC_CREAT door zelf zal het object maken als het niet bestaat of de ID van het huidige object gewoon te retourneren als het al is geboekt. OR'ing IPC_EXCL met IPC_CREAT veroorzaakt de functie fout als het object al bestaat. Hiervandaan kan u onderhandelen over een manier om een nieuwe sleutel genereren en proberen en in plaats daarvan het betreffende object openen. U kunt ook of in bestandsmachtigingen - 0666 of 0660 in deze code. Dit vertegenwoordigt de machtigingen voor de eigenaar, groep en anderen voor dit object. De waarde 0666 kan alle drie te lezen/schrijven terwijl 0660 kan alleen de eigenaar en de groep lezen/schrijven.

In deze code weglaten ik IPC_EXCL vooral omdat als u de IPC-objecten vernietigen vergeet voordat de herprogrammering van de Galileo, de oude voorwerpen van IPC aanhouden. Wanneer de nieuwe schets wordt uitgevoerd met IPC_EXCL zal het zien dat de IPC-objecten al zijn gemaakt en zal fout. Dit nu verlaat u handmatig de objecten vernietigen of opnieuw opstarten van het Galileo. Door het weglaten van IPC_EXCL van dit probleem wordt voorkomen. Ook, aangezien de enige programma's maken van IPC-objecten zijn degenen die u lanceert hoeft u niet te vrezen botsing met een ander proces van IPC objecten.
Extra argumenten en initialisatie  In SysV is een semafoor-object eigenlijk een array van semaforen. Om redenen van eenvoud zullen we elk object dat u wilt slechts een enkele semafoor beperken. Dit helpt ook de code een beetje leesbaarder maken. Het tweede argument van de semget is het aantal semaforen voor dit object.

Een object gedeeld geheugen moet weten de grootte voor de schepping. Daarom is het tweede argument van de shmget de grootte van het gedeelde geheugen segment moet worden gemaakt.

De shmat functie zal het gedeelde geheugen-object koppelen naar de adresruimte van het huidige proces (dat wil zeggen de schets). Dit is wat de schets lezen en schrijven uit het gedeelde geheugen segment alsof het gewoon een ander gegevensobject, gemaakt door de schets zal toestaan. De void aanwijzer geretourneerd door shmat moet worden gegoten zodat we op het later werken kunnen.

De semafoor moet het aantal geïnitialiseerd op een waarde die consistent is met de interpretatie ervan in de code. Bijvoorbeeld, moet een semafoor die aangeeft hoeveel gegevens bevinden zich in een (aanvankelijk leeg) wachtrij worden ingesteld op nul na oprichting. Dit wordt gedaan met de semctl functie waarin van de semafoor ID, de index in de array van de semafoor (altijd 0 voor deze code), een opdracht en een Unie. De Unie bevat gegevens die kunnen worden gebruikt door bepaalde opdrachten. We moeten hier alleen de SETVAL opdracht waarin van de semafoor graaf gelijk is aan de int binnen de Unie.

Gerelateerde Artikelen

Aan de slag met Intel Galileo

Aan de slag met Intel Galileo

Ik heb onlangs Intel Galileo vanuitMicroscoop aangezien ik behoor tot de finalistIoT concurrentie. Nu ben ik mijn tijd doen een heleboel creatieve materialen met mijn Galileo doorbrengen. Ik schrijf dit instructable zijn voor iedereen die wilde aan d
Interfacing Keypad en LCD-scherm met Intel Galileo

Interfacing Keypad en LCD-scherm met Intel Galileo

IntroductieIn deze tutorial ga je laten zien hoe interface van vloeibare kristallendisplay en een toetsenbord met Intel Galileo. In deze tutorial zullen we gebruiken een 16 x 2 LCD, 2 rijen of teken in 16 kolommen weergegeven.Stap 1: De onderdelen;On
Raadselachtig Ladenkastje opent met behulp van twitter en draadloze energie

Raadselachtig Ladenkastje opent met behulp van twitter en draadloze energie

Een raadselachtige cadeau! Mijn "slachtoffer" wordt gegeven drie vakken:Een zeer kleine doos vergrendeld met ketting en een hangslot.Een vergrendelde kleine doos met geen buiten sloten, dat is gesloten en heeft een reflecterende bovenste deksel.
Robo-auto met behulp van 360 ° servomotor draadloze

Robo-auto met behulp van 360 ° servomotor draadloze

smart auto robot met behulp van 360 graden continue rotatie servomotor.Stap 1: onderdelen Stap 2: maken van stappen Stap 3: prototype Stap 4: draadloze communicatie systeem - zigbee Stap 5: programma #include < Servo.h >/////////////////////////////
Met behulp van Codea voor de iPad

Met behulp van Codea voor de iPad

Codea door twee woont links is een van de hoogste kwaliteit codering omgevingen beschikbaar voor de iPad. Met behulp van Codea op de iPad is veruit de beste codering van de ervaring die men zou kunnen hopen op een iPad. Voor degenen onder u die nieuw
Met behulp van gelatine voor schimmels en protheses

Met behulp van gelatine voor schimmels en protheses

na mijn ' ible over alginaat gebruiken als een mal maken materiaal, er waren veel vragen over materialen en het verkrijgen van hen. Hier is een andere methode die gebruikmaakt van alleen de items die beschikbaar zijn.Gelatine is een veel genegeerde p
Disco Party licht met behulp van decoraties voor de feestdagen van de overgebleven

Disco Party licht met behulp van decoraties voor de feestdagen van de overgebleven

mijn nichtje is van plan om een Disco thema verjaardagsfeest dit jaar, en dus we hebben al op zoek naar goedkoop disco lichten voor haar partij.  Voor Halloween hadden we verschillende knipperende LED decoratieve geest die waren gekocht van de dollar
A maken 3D Print van begin tot het bestand met behulp van Zbrush voor Beginners

A maken 3D Print van begin tot het bestand met behulp van Zbrush voor Beginners

U moet:Een computer Zbrush 4R4 of een vergelijkbare groep Z plugin 3D Printer exporteur (vrij van Pixologic van web-pagina)Tijd: 2-3 uurOK, dit is mijn eerste instructable en ik hoop dat u het nuttig vinden. Het doel is om te laten zien dat jullie he
Met behulp van Diodes voor ventilator controle.

Met behulp van Diodes voor ventilator controle.

Dit in alternatief voor het gebruik van reostaten en chips voor het beheersen van de snelheid van de ventilator.Het idee voor deze kwam uit http://www.cpemma.co.uk/sdiodes.html nu http://www.pcsilencioso.com/cpemma/sdiodes.html en ik wilde uitleggen
Met behulp van Printcraft voor afdrukken in 3D

Met behulp van Printcraft voor afdrukken in 3D

3D printen kunnen een heleboel plezier. Er zijn zoveel gratis printables op sites zoals Thingiverse die u zal nooit opraken van de dingen om af te drukken. Maar wat als u liever uw eigen oorspronkelijke object zou afdrukken? SketchUp en blender zijn
Met behulp van curven voor kleur enhacement

Met behulp van curven voor kleur enhacement

Deze tutorial is bedoeld voor beginners, het is een eenvoudige manier om kleuren te verbeteren en het aantal drama toevoegen aan uw foto's met behulp van curven in Photoshop. Ik heb een oudere versie van Photoshop CS5 die ik op Mac draait ben, er zij
Maken van foto's van truc met behulp van Gimp voor Windows software

Maken van foto's van truc met behulp van Gimp voor Windows software

In de foto hierboven, lijkt het dat ik heb een 32 Ford coupe in mijn oprit met draaiende motor en uitlaat dampen die uit de dubbele uitlaat pijpen.  Dit is eigenlijk een schaalmodel 1/24, die ik uitgebreid aan het passen van de scène.  Terwijl sommig
Met behulp van Sugru voor een nieuwe crockpot deksel greep

Met behulp van Sugru voor een nieuwe crockpot deksel greep

de plastic handvat brak het glas deksel van onze crockpot deksel.Ik heb besloten dat ik de Sugru genadig kopen van Instructables en Sugru voor een wedstrijd zou gebruiken om het maken van een nieuwe greep voor het deksel.Stap 1: Maak het handvat-onde
Pirate's hoed met behulp van papier voor Halloween

Pirate's hoed met behulp van papier voor Halloween

Hoi allemaalIn dit instructable. Ik zal delen hoe ik maakte een eenvoudige pirate's hoed voor mijn zoon voor Halloween.Dit is eenvoudige ambacht, zeer eenvoudig te maken, nauwelijks neemt 2 uurStap 1: materialenWat we nodig hebben?Zwarte grafiek papi