- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/shm.h>
- #include "shmdata.c"
- #include <string.h>
- int main()
- {
- int running = 1;
- void *shm = NULL;
- struct shared_use_st * shared;
- int shmid;
- int i;
- shmid = shmget((key_t)1234,sizeof(struct shared_use_st),0666|IPC_CREAT);
- if(shmid == -1)
- {
- fprintf(stderr,"shmget failed\n");
- exit(EXIT_FAILURE);
- }
- shm = shmat(shmid,0,0);
- if(shm == (void*)-1)
- {
- fprintf(stderr,"shmat failed\n");
- exit(EXIT_FAILURE);
- }
- printf("\n memary attached at %d\n",(int)shm);
- shared = (struct shared_use_st *)shm;
- shared->written = 0;
- while(running)
- {
- if(shared->written == 1)
- {
- printf("get string: %s\n",shared->text);
- sleep(rand()%3);
- shared->written = 2;
- if(strncmp(shared->text,"end",3) == 0)
- running = 0;
- }
- else if(shared->written == 2)
- {
- i = 0;
- while(shared->text[i] != '\n')
- {
- if(shared->text[i] >= 'A' && shared->text[i] <= 'Z')
- {
- shared->text[i] += 32;
- }
- i++;
- }
- shared->written = 3;
- printf("send string:%s\n",shared->text);
- }
- else
- {
- sleep(1);
- }
- }
- if(shmdt(shm) == -1)
- {
- fprintf(stderr,"shmdt failed\n");
- exit(EXIT_FAILURE);
- }
- if(shmctl(shmid,IPC_RMID,0) == -1)
- {
- fprintf(stderr,"stmctl failed\n");
- exit(EXIT_FAILURE);
- }
- exit(EXIT_SUCCESS);
- return 0;
- }
- </pre>/*shmwrite.c*/
- <pre></pre>
- <pre code_snippet_id="2007090" snippet_file_name="blog_20161125_4_9915267" name="code" class="cpp"><pre code_snippet_id="2007090" snippet_file_name="blog_20161125_4_9915267" name="code" class="cpp"><pre code_snippet_id="2007090" snippet_file_name="blog_20161125_4_9915267" name="code" class="cpp">#include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/shm.h>
- #include "shmdata.c"
- #include <string.h>
- #define BUFFSIZE 2048
- int main()
- {
- int running = 1;
- void *shm = NULL;
- struct shared_use_st * shared = NULL;
- char buffer[BUFFSIZE + 1];
- int shmid;
- shmid = shmget((key_t)1234,sizeof(struct shared_use_st),0666|IPC_CREAT);
- if(shmid == -1)
- {
- fprintf(stderr,"shmget failed\n");
- exit(EXIT_FAILURE);
- }
- shm = shmat(shmid,0,0);
- if(shm == (void*)-1)
- {
- fprintf(stderr,"shmat failed\n");
- exit(EXIT_FAILURE);
- }
- printf("\n memary attached at %d\n",(int)shm);
- shared = (struct shared_use_st *)shm;
- //shared->written = 0;
- while(running)
- {
- if(shared->written == 0)
- {
- printf("send string:\n");
- fgets(buffer,BUFFSIZE,stdin);
- strncpy(shared->text,buffer,TEXT_SZ);
- shared->written = 1;
- if(strncmp(shared->text,"end",3) == 0)
- running = 0;
- }
- else if(shared->written == 3)
- {
- printf("get string:%s\n",shared->text);
- shared->written = 0;
- }
- else
- {
- sleep(1);
- }
- }
- if(shmdt(shm) == -1)
- {
- fprintf(stderr,"shmdt failed\n");
- exit(EXIT_FAILURE);
- }
- /* if(shmctl(shmid,IPC_RMID,0) == -1)
- {
- fprintf(stderr,"stmctl failed\n");
- exit(EXIT_FAILURE);
- }*/
- sleep(2);
- exit(EXIT_SUCCESS);
- return 0;
- }
大小写转换
最新推荐文章于 2023-02-12 21:11:08 发布