while(loop){
    int new_sock = accept(info_un->unix_sock, NULL, NULL);
    if(new_sock > 0){
      const int on = 1;
      if(setsockopt(new_sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on))){
        printf("error setsockopt\n");
      }
      struct ucred data_pid;
      struct msghdr msg;
      struct cmsghdr cmsg, *cmsg_ptr;
      msg.msg_control = &cmsg;
      msg.msg_controllen = sizeof(cmsg);
  
      if(recvmsg(new_sock, &msg, SCM_CREDENTIALS)){
        cmsg_ptr = CMSG_FIRSTHDR(&msg);
        memcpy(&data_pid, CMSG_DATA(cmsg_ptr), sizeof(data_pid));
        printf("id info: %d %d %d\n", data_pid.pid, data_pid.gid, data_pid.uid);
      } else {
        printf("error recvmsg\n");
      }
      close(new_sock);
    }