SIGUSR1 시그널을 이용해서 자식프로세스가
부모 프로세스에게 메시지를 보내서 받을수 있게 만들면 어떻게 해야 할까요?
나름 해보다가 막혔습니다..
void handler(char * addr)
{
printf("parent received %s",addr );
}
int main(int argc, char *argv[]) {
int fd;
pid_t pid;
caddr_t addr;
struct stat statbuf;
if (argc != 2) {
fprintf(stderr, "Usage : %s filename\n", argv[0]);
exit(1);
}
if (stat(argv[1], &statbuf) == -1) {
perror("stat");
exit(1);
}
if ((fd = open(argv[1], O_RDWR)) == -1) {
perror("open");
exit(1);
}
addr = mmap(NULL, statbuf.st_size, PROT_READ|PROT_WRITE,
MAP_SHARED, fd, (off_t)0);
if (addr == MAP_FAILED) {
perror("mmap");
exit(1);
}
close(fd);
signal(SIGUSR1,handler);
switch (pid = fork()) {
case -1 : /* fork failed */
perror("fork");
exit(1);
break;
case 0 : /* child process */
break;
default : /* parent process */
break;
}
return 0;
}
kill(parentPID, SIGUSR1);
kill(parentPID, SIGUSR1);
댓글 달기