Reading the man pages and some code did not really help me in
understanding the difference between - or better, when I should use - perror(\"...\") or fp
perror() always writes to stderr; strerr(), used together with fprintf(), can write to any output - including stderr but not exclusively.
fprintf(stdout, "Error: %s", strerror(errno));
fprintf(stderr, "Error: %s", strerror(errno)); // which is equivalent to perror("Error")
Furthermore, perror imposes its own text formating "text: error description"