Hola! cuando decis "termina ahi" te referis a que el programa se cierra solo?? si es asi q raro, a menos que uses una funcion como exit no deberia cerrarse...
Para evitar ese error si o si vas a tener que borrar el archivo fifo si existe previamente(o al menos eso recuerdo). Si no queres usar system tenes la funcion unlink() aunque estoy seguro que tampoco vas a querer usarlo ya que seria lo mismo; deberia haber un flag para que al crear el fifo omitiera si esté ya existe
Otra cosa, me parece que estas usando mal el strerror ya que no deberia imprimir "error desconocido -1" sino deberia decir "file exists". Para que esto suceda debes usar la variable errno y no el retorno de mkfifo
Saludos