쓰기 측 :
사용법 #include <iostream> 사용법 #include <unistd.h> #INCLUDE <stdlib.h> #INCLUDE <STDIO.H> #INCLUDE <SYS / shm.h> 사용 스페이스 성병; 구조체 MappingDataType { INT mappingData; }; 불리언 SetUsedPID ( 문자열 된 MappingName) { 공극 * SHM = NULL; MappingDataType * 공유; INT shmid가 =하는 shmget ((된 key_t) 1234 , 는 sizeof (MappingDataType), 0666 | IPC_CREAT); 경우 (shmid가 == -1 ) { fprintf와는 (표준 오류, " shmget 시스템은 \ n을 실패 " ); 돌아 거짓 ; } SHM =는 shmat (shmid가, 0 , 0 ); 경우 (SHM == ( 공극 *) - 1 ) { fprintf와는 (열려진, " 시 shmat는 \ n을 실패 " ); 돌아 거짓 ; } 공유 = (MappingDataType의 * ) SHM 단계; 공유 -> mappingData = :: GETPID (); / * 경우 (시, shmdt (SHM) == -1) { fprintf와는 (표준 오류, "시, shmdt는 \ n을 실패"); false를 반환; } 경우 (설명 shmctl (shmid가, IPC_RMID, 0) == -1) { fprintf와는 (열려진 "설명 shmctl (IPC_RMID)는 \ n을 실패"); false를 반환; } * / 반환 사실 ; } INT 본체 ( 의 INT 는 argc, 숯 *의 는 argv []) { 부울 결과 = SetUsedPID ( " ABC " ); // 打断点,运行读取端 COUT << 결과 << ENDL; 반환 0 ; }
끝을보기 :
사용법 #include <iostream> 사용법 #include <unistd.h> #INCLUDE <stdlib.h> #INCLUDE <STDIO.H> #INCLUDE <SYS / shm.h> 사용 스페이스 성병; 구조체 MappingDataType { INT mappingData; }; INT GetUsedPID ( 문자열 된 MappingName) { 공극 * SHM = NULL; MappingDataType * 공유; INT shmid가 =하는 shmget ((된 key_t) 1234 , 는 sizeof (MappingDataType), 0666 | IPC_CREAT); 만약 - shmid가 == ( 1) { fprintf와는 (표준 오류, " shmget 시스템은 \ n을 실패 " ); 반환 0 ; } SHM =는 shmat (shmid가, 0 , 0 ); 경우 (SHM == ( 공극 *) - 1 ) { fprintf와는 (열려진, " 시 shmat는 \ n을 실패 " ); 반환 0 ; } 공유 = ( 구조체 MappingDataType의 * ) SHM 단계; INT PID = shared-> mappingData; 경우 (시, shmdt (SHM) == -1 ) { fprintf와는 (표준 오류, " 시, shmdt는 \ n을 실패 " ); } 경우 (설명 shmctl (shmid가, IPC_RMID는, 0 ) == - 1 ) { fprintf와는 (열려진, " 설명 shmctl (IPC_RMID)는 \ n을 실패 " ); } 반환 PID; } INT 본체 ( 의 INT 는 argc, 숯 *의 는 argv []) { INT PID = GetUsedPID ( " ABC " ); COUT << PID << ENDL; //<================= 중단 점을 넣고 여기 반환 0 ; }