[IPC] 세마포어에서 컴파일시 에러..
글쓴이: initiative / 작성시간: 목, 2004/08/19 - 1:54오후
아래 코드는 semaphore 를 이용하여 테스트하는 간단한 프로그램입니다.
joinc 위키에서 퍼온 것임.
제 linux 환경(gcc 3.X) 에서 컴파일하는 데
[dev@XXXsrc]$ gcc -o orig sem_test_orig.c sem_test_orig.c:16: error: two or more data types in declaration of `semid'
에러가 납니다.
무엇이 문제인지요?
#include <sys/types.h> #include <sys/sem.h> #include <sys/ipc.h> #include <stdio.h> #include <unistd.h> #define SEMKEY 2345 union semun { int val; struct semid_ds *buf; unsigned short int *array; } static int semid; int main(int argc, char **argv) { FILE* fp; char buf[11]; char count[11]; union semun sem_union; struct sembuf mysem_open ={0, -1, SEM_UNDO}; struct sembuf mysem_close = {0, 1, SEM_UNDO}; int sem_num; memset(buf, 0x00, 11); memset(count, 0x00, 11); if(argc > 1) sem_num = 1; else sem_num =0; semid = semget((key_t)234, sem_num, 0660| IPC_CREAT); if(semid == -1) { perror("semget error"); exit(0); } if(semop(semid, &mysem_open, 1) == -1) { perror("semop error"); exit(0); } if( (fp = fopen("counter.txt", "r+")) == NULL) { perror("fopen error"); exit(0); } fgets(buf, 11, fp); rewind(fp); buf[strlen(buf) -1] = 0x00; sprintf(count, "%d\n", atoi(buf) + 1); printf("%s", count); sleep(10); fputs(count, fp); fclose(fp); semop(semid, &mysem_close, 1); return 1; }
[/code]
Forums:
union semun 선언 뒤에 세미콜론이 빠진거 같네요.
union semun 선언 뒤에 세미콜론이 빠진거 같네요.
----
Let's shut up and code.
댓글 달기