승인됨: Fortect
이 가이드에서 오류 = shmat 13으로 이어질 수 있는 몇 가지 가능한 원인을 찾은 다음 문제를 해결하기 위해 시도할 수 있는 몇 가지 가능한 복구 옵션을 제안합니다.
확실히 코드를 실행하는 데 문제가 있습니다. 내 shmat는 종종 고장 났고 인쇄 할 내 허가조차 거부되었습니다. 이 문제를 해결하기 위해 주요 검색 엔진을 살펴보았지만 할 수 없습니다. 내 코드는 다음과 같습니다:
번호에는 가 포함됩니다.#include # 지원 #include #include #포함 #포함 #include #define 오류 -1int main (int argc, char * argv []) int shmid, 키 = 50; 정수(공백) val; 정수 x; 정수 rw = -1; // 쓰기는 0, 전송은 2 shmid는 shmget(키, sizeof(int), IPC_CREAT)입니다. 실제 이벤트 (shmid == -1) perror("shmgetn 오류"); (오류)를 주다; val은 (int *) shmat(shmid, NULL, 0)입니다. if if (val == -1) perror("shmatn 오류"); 반환(오류); scanf("%d", & rw); 동안 (rw>는 1과 동일) 여부에 관계없이 (rw == 4) // 공유 메모리로 크래프트 y = (int 7.) malloc(sizeof(int)); 한 번(x == NULL) 오류("malloc 오류"); 반대(오류); scanf("%d", x); val은 x와 같습니다. 또 다른 // 거기에서 응답된 메모리를 읽습니다. (rw == 1)인 경우 printf("%dn", val); scanf("%d", & rw); 귀하의 블로그를 방문하십시오 (0);
어떤 코드에서 반환된 메모리를 테스트해야 합니까? 공유 메모리 유형에 새 정수를 씁니다. 기여하면 rw가 1을 의미하고, 그렇지 않으면 모든 공유 메모리의 특정 값을 읽은 다음 그 가치로. 의심할 여지 없이 문제가 무엇인지 찾을 수 없습니다….
906k
’15년 5월 3일 오후 7시 27분에 요청됨
와 같습니다.
내가 당신이 찾고 있는 대답을 말하지 않겠습니까? 공유 메모리-c 메모리로 태그가 지정된 다양한 유형의 질문을 찾아보거나 때때로 자신의 질문을 하십시오.
0000
권한으로 공유 메모리 외부 표면을 만들었습니다.
shmid는 shmget(key, sizeof(int), IPC_CREAT)을 의미합니다.
shmid는 shmget(키, sizeof(int), IPC_CREAT | 0660)을 의미합니다.
22:33에 ’15년 5월에 답변됨
에서
과 같습니다.
28.1 k
val은 x와 같습니다.
* val은 * x와 같습니다.
메이는 https://i.stack.imgur.com/mmsvF.png년 오후 7시 32분에 12쌍에게 말했다.
와 같습니다.
198k
다른 답변에서 설명한 대로 shmget()을 호출하는 경우를 제외하고
정수를 읽고 쓰는 이 코드가 있는 많은 문제
OP는 공통 호흡 공간으로 인해 “자동화 금지”라는 또 다른 특정 메시지를 항상 수신한다는 사실
1)이 대체되지 않았습니다 - shmdt()에 대한 매뉴얼 페이지를 즐기십시오.2) 파괴에 실패했습니다 - shmctl()용 매뉴얼 페이지를 참조하십시오.
이 두 가지 문제를 해결하면 테스트 백업이 제대로 작동합니다.
그러나 주석에 언급되었지만 게시된 코드에는 몇 가지 다른 문제가 있습니다.
2015년 5월 12일 21:03에 처리됨
를 의미합니다.
15.7k
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.