Pensando fora da caixa, você poderia chamar write()
com um descritor de arquivo que não faz nada com as gravações. Por exemplo,
int main()
{
int d = open("/dev/null", 0);
write(d, "hello world", 11);
}
Parte da saída strace resultante no meu sistema é:
open("/dev/null", O_RDONLY) = 3
write(3, "hello world", 11) = -1 EBADF (Bad file descriptor)
Isso é suficiente para mensagens curtas (as mais longas podem ser truncadas por strace).