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);
댓글 달기