#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <errno.h>

#define K	1024

char *pf = "/var/tmp/listen";

ssize_t writeall(int fd, void *buf, size_t r)
{
  ssize_t w, t = 0;

  do {
    w = write(fd, buf+t, r-t);
    if (w < 0) return w;
    t += w;
  } while (t < r);

  return t;
}

int main(void)
{
  int r;
  char buf[K];

  if (access(pf, F_OK) != 0) {
    printf("No one is listening.\n");
    exit(0);
  }

  printf("Write your message, type Ctrl-D to quit:\n");
  int pfd = open(pf, O_WRONLY);
  while((r = read(STDIN_FILENO, buf, K)) > 0) {
    writeall(pfd, buf, r);
  }

  return 0;
}
