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

📄

📁 包含几个用不同方式(共享内存、socket、FIFO、消息队列等)实现进程通信的小程序
💻
字号:
//shmwrite.c    
   
/************************************************************  
 * 用共享内存区的方法实现进程间通信的例子   
 * example2-07.c  example2-08.c  example2-09.c  example2-10.c  
 ************************************************************/   
   
/************************************************************   
 * 本例向指定的共享内存区写入信息 example2-08.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       *ptr;   
    if (argc != 2)   
        printf("usage: shmwrite <PATHNAME>\n");   
    id = shmget(ftok(argv[1], 0), 0, SVSHM_MODE);   //创建共享内存区    
    ptr = shmat(id, NULL, 0);                                           //把该共享内存区附接到到当前进程的地址空间    
    shmctl(id, IPC_STAT, &buff);   
                                    //由IPC_STAT取得共享内存区的shmid_ds结构,并存到buff指定的地址。    
    for (i = 0; i < buff.shm_segsz; i++)                 //向指定的共享内存区写入数据    
        *ptr++ = i;   
    exit(0);   
}   

⌨️ 快捷键说明

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