zuoye

第二题:

​​​​

typedef struct shmbuf
{
    char test1[56];
    char test2[56];
    int flag;
} shm_t;
 
 
 
void* task(void* arg)
{
    
    key_t key = ftok("./li", 1);
   
    int shm_id = shmget(key, sizeof(shm_t), IPC_CREAT | 0666);
    shm_t *addr = shmat(shm_id, 0, 0);
 
    memset(addr->test2, 0, sizeof(shm_t));
 
    while(1)
    {
        if(addr->flag== 1)
        {
 
            printf("%s\n",addr->test2);
            
            addr->flag= 0;
 
        }
        sleep(1);
    }
}
 
int main(int argc, const char *argv[])
{

    key_t key = ftok("./ipc", 1);
    int shm_id = shmget(key, sizeof(shm_t), IPC_CREAT | 0666);
    shm_t *addr = shmat(shm_id, 0, 0);
 
    pthread_t id;
    pthread_create(&id, 0, task, 0);
    pthread_detach(id);
    while (1)
    {
 
        printf("please enter:");
        scanf("%55s", addr->test1);
        while (getchar() != '\n')
            ;
        addr->flag = 1;
 
    }
 
    return 0;

 

typedef struct shmbuf
{
    char test1[56];
    char test2[56];
    int flag;
} shm_t;
 
 
 
void* task(void* arg)
{
    
    key_t key = ftok("./li", 1);
   
    int shm_id = shmget(key, sizeof(shm_t), IPC_CREAT | 0666);
    shm_t *addr = shmat(shm_id, 0, 0);
 
    memset(addr->test1, 0, sizeof(shm_t));
 
    while(1)
    {
        if(addr->flag == 1)
        {
 
            printf("%s\n",addr->test1);
            
            addr->flag= 0;
 
        }
        sleep(1);
    }
}
 
int main(int argc, const char *argv[])
{

    key_t key = ftok("./ipc", 1);
    int shm_id = shmget(key, sizeof(shm_t), IPC_CREAT | 0666);
    shm_t *addr = shmat(shm_id, 0, 0);
 
    pthread_t id;
    pthread_create(&id, 0, task, 0);
    pthread_detach(id);
    while (1)
    {
 
        printf("please enter:");
        scanf("%s", addr->test2);
        while (getchar() != '\n');
        addr->flag= 1;
 
    }
 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值