第二题:
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;
}