⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 包含几个用不同方式(共享内存、socket、FIFO、消息队列等)实现进程通信的小程序
💻
字号:
//shmread.c    
   
/************************************************************   
 * 用共享内存区的方法实现进程间通信的例子   
 * example2-07.c  example2-08.c  example2-09.c  example2-10.c  
 ************************************************************/   
   
/************************************************************   
 * 本例从指定的消息队列中读取数据 example2-09.c    
 ************************************************************/   
   
/************************************************************    
 * 用shmget()打开指定的共享内存区后,  
 * 由shmat()把该内存区附接到当前进程的地址空间。  
 * 共享内存区的大小由IPC_STAT命令调用shmctl得到。  
 * 在for循环中,读取共享内存区中的数据。  
 ************************************************************/   
   
   
#include    <STDLIB.H>    
#include    <SYS ipc.h>    
#include    <SYS shm.h>    
   
#define     SVSHM_MODE  (SHM_R | SHM_W | SHM_R >> 3 | SHM_R >> 6)    
   
int   
main(int argc, char ** argv)   
{   
    int         i, id;   
    struct shmid_ds     buff;   
    unsigned char       c, *ptr;   
       
    if (argc != 2)   
        printf("usage: shmread <PATHNAME>\n");   
    id = shmget(ftok(argv[1], 0), 0, SVSHM_MODE);   
    ptr = shmat(id, NULL, 0);   
    shmctl(id, IPC_STAT, &buff);   
    for (i = 0; i < buff.shm_segsz; i++)   
        if ( (c = *ptr++) != i)   
            printf("ptr[%d] = %d", i, c);   
    exit(0);   
}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -