0
그래서 나는 각각 세마포어를 사용하여 메시지를 송수신하는 두 개의 프로그램, 송신자와 수신자를 가지고있다. 이것은 내가 지금까지 가지고있는 코드입니다.공유 파일을 사용하여 read() 및 write()를 사용하여 메시지를 보내고 받으려면 어떻게해야합니까? (C)
sender.c
int main(int argc, char *argv[]){
if(argc != 2){
printf("%s [message]\n", argv[0]);
return -1;
}
sem_t *semid = sem_open(SEM_NAME, O_CREAT, 00666, 0);
char *message = argv[1];
int fd = open("channel.txt", O_WRONLY);
write(fd, message, strlen(message));
sem_post(semid);
sem_close(semid);
close(fd);
return 0;
}
receiver.c
int main(int argc, char *argv[]){
char *buf = malloc(256);
sem_t *semid = sem_open(SEM_NAME, O_CREAT, 00666, 0);
int fd = open("channel.txt", O_WRONLY);
while(TRUE){
sem_wait(semid);
lseek(fd, 0, SEEK_SET);
read(fd, buf, sizeof(buf));
printf("receiver [msg arrival]: %s\n", buf);
}
close(fd);
free(buf);
sem_close(semid);
sem_unlink(SEM_NAME);
return 0;
}
보낸 파일 "channel.txt"에 메시지를 쓸 수 있지만 수신기는 항상 빈을 인쇄합니다 메시지.
파일을받는 사람에게만 여는 중입니다. – slugonamission