1. 程式人生 > >IPC 簡單的讀寫通訊例項 linux環境高階程式設計

IPC 簡單的讀寫通訊例項 linux環境高階程式設計

先在當前目錄即編譯目錄下  是有touch建立 myshm檔案

然後依次編譯以下兩個檔案

shm_write

#include <fcntl.h>
#include <stdio.h>
#include "apue.h"
#include <errno.h>
#include <sys/wait.h>
#include "sys/types.h"
#include <unistd.h>
#include <stropts.h>
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <string.h>

typedef struct {
	char name[4];
	int age;
}people;

int main(int argc,char *argv[])
{
	int i,shmid;
	key_t key;
	char temp;
	people *p_map;
	char *name="./myshm";
	//建立一個鍵值
	key=ftok(name,1);
	perror("ftok");
	//獲取共享記憶體id,也即建立ipc
	shmid=shmget(key,4096,IPC_CREAT|00666);
	perror("shmget");
	//返回共享記憶體的地址
	p_map=(people *)shmat(shmid,NULL,0);
	temp='a';
	for(i=0;i<10;i++)
		{
			memcpy((*(p_map+i)).name,&temp,1);
			(*(p_map+i)).age=20+i;
			
		}
}

shm_read
#include <fcntl.h>
#include <stdio.h>
#include "apue.h"
#include <errno.h>
#include <sys/wait.h>
#include "sys/types.h"
#include <unistd.h>
#include <stropts.h>
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <string.h>
//讀端程式
typedef struct {
	char name[4];
	int age;
}people;

int main(int argc,char *argv[])
{
	int i,shmid;
	key_t key;
	char temp;
	people *p_map;
	char *name="./myshm";
	//建立一個鍵值
	key=ftok(name,1);
	perror("ftok");
	//獲取共享記憶體id,也即建立ipc
	shmid=shmget(key,4096,IPC_CREAT|00666);
	perror("shmget");
	//返回共享記憶體的地址
	p_map=(people *)shmat(shmid,NULL,0);
	temp='a';
	for(i=0;i<10;i++)
		{
			printf("name %s\n",(*(p_map+i)).name);
			printf("age %d\n",(*(p_map+i)).age);
			
		}
	//unlink
	shmdt(p_map);
	perror("shmdt");
	
}

然後先執行./shm_write

再執行  ./shm_read

就可以看到讀到的資料了

相關推薦

IPC 簡單通訊例項 linux環境高階程式設計

先在當前目錄即編譯目錄下  是有touch建立 myshm檔案 然後依次編譯以下兩個檔案 shm_write #include <fcntl.h> #include <stdio.h> #include "apue.h" #include <e

Linux環境高階程式設計--介紹

       從今天開始,將開啟Linux環境高階程式設計(Advanced Programming Of Linux Enviroment)的學習筆記或者說總結,我將持續和大家分享自己的學習成果。本系列部落格依託於lilin老師的課程,程式碼也基本上來自於課程的內容,在

cookies的簡單方法

cookie一、cookie的寫入//定義COOKIES,實例化HttpCookie類並添加值HttpCookie cookie = new HttpCookie(key, value); //設置保存時間 cookie.Expires = DateTime.Now.AddDays(1);//添加當前實例化

C#基礎視頻教程6.3 如何簡單數據庫

一點 犯錯 .html ack ble 數字 擴展 你知道 定義 在繼續往下做之前,我們需要把之前的代碼盡可能的精簡(會對後面很有好處,而且讀者也應該仔細比對這一部分的代碼和上一部分哪裏真正得到了優化,從而提高編程水平)。 首先數據庫的操作類有哪些是可以做的更加普遍,變量

node--初步了解-01 小文件簡單

第一個 -- 了解 讀取文件 odi txt script lag read let fs = require(‘fs‘);// 方法都是 異步沒有sync / 同步 Sync// 返回值可以獲取同步的結果let path = require(‘path‘);// 讀取文件

Qt簡單xml

這裡只簡單舉例,讀寫是關聯在一起的。 xml文件的內容是: <?xml version="1.0" encoding="UTF-8"?> <fileinfo>  <filename>test</filename>  &l

三、UDP實現簡單的socket通訊例項

1.伺服器端程式碼 package udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 類功能描述:伺服器端,先啟動伺服器端後啟動

二、多執行緒實現簡單的socket通訊例項(TCP)

1.伺服器端 import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * 類功能描述:先啟動伺服器端,再啟動客戶端 * * @author:*** * @createTime:2018/

一、一個簡單的socket通訊例項(TCP)

  1.服務端程式碼 import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * 類功能描述:先啟動伺服器端,再啟動客戶端 * * @author:*** * @creat

Percona Mysql Galera多叢集部署生產環境實記

一、部署MySQL:yum install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm -y 安裝percona的倉庫檔案。yum install

LINUX系統識別外設(基於C的自動)(LINUX模擬U盤)【二】

前言 最近在開發基於量子隨機數的離線金鑰充值系統,主要功能是對外設進行充值隨機數金鑰。軟體部署在centos7系統上,因此需要軟體自動識別系統是否有外設通過USB口接入裝置。 在上一章中我簡單介紹瞭如何去對linux系統中的外來儲存裝置進行讀寫操作,在本章中我將繼續講解,

Swift 簡單檔案例

//取得當前應用下路徑 var sp = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentationDirectory, NSSearchPathDomain

Unity下關於C#的檔案一(基於TXT的簡單)

Unity下關於C#的檔案讀寫(基於TXT和LitJson) NOTE (基本認識):其實.txt,.xml,.json這類檔案都屬於文字檔案,類似的還有.lrc歌詞檔案,.ini配置檔案,.reg登錄檔檔案等等,這類檔案所儲存的內容都是文字(即為字串),

cordova檔案系統建立資料夾與檔案例項

一、cordova 檔案系統 1. 安裝外掛 cordova 需要安裝外掛才能對對手機檔案系統進行操作 cordova plagin add cordova-plugin-file 2. 需要了解的外掛api 1 . cordova.file.externalRootD

Java Web:JSON 作為配置檔案,簡單的方法

讀取配置檔案 先大概說一說思路。首先配置檔案以 *.json 格式儲存在服務端磁碟上。要讀取改配置檔案的話,通過 java.io.File 包讀取磁碟內容,然後形成介面,作為響應內容返回到客戶。既然 Web 瀏覽器天然支援 JSON,這讀取一過程我們藉助 <script

一. Mysql分離 :Linux上配置,通過binlog進行主從同步

mysql主從複製,讀寫分離配置   1.主資料庫:       a.在主資料庫裡建立一個同步賬號      #每個從資料庫會使用一個MySQL賬號來連線主資料庫,所以我們要在主資料庫裡建立一個賬號,並且該賬號要授予

Python 3 利用 subprocess 實現管道( pipe )互動操作/通訊

1 # -*- coding:utf-8 -*- 2 3 import subprocess 4 import sys 5 import threading 6 7 class LoopException(Exception): 8 """迴圈異常自定義異常

verilog中24LC04B iic(i2c)通訊設計步驟,以及程式常見寫法錯誤。

板子使用的是黑金的是xilinx spartan—6開發板,首先準備一份24LC04B晶片資料,讀懂資料後列出關鍵引數。 如下: 1、空閒狀態為SDA和SCL都為高電平 2、開始狀態為:保持SCL,SDA高電平不變,SDA 保持最少4us,之後SDA為低,保持最少4us

使用NPOIExcel例項

特別注意:如果使用FileStream 開啟檔案之後沒有Close,有機率導致Excel損壞,使用using方式可以避免 using System; using System.Collections.Generic; using System.IO; using NPOI.SS.User

Python簡單Excel (xlwt, xlrd, xlutils)

#!/usr/bin/env python #coding=utf8 #################################################################################### # #此程式是為了將excel中的