After looking at the presumably-working uses of system() in initdb and
pg_ctl, I have a theory about the pg_regress problem --- could it be
that Windows system() requires a space between I/O redirection symbols
and pathnames? I see that the pre-existing code consistently puts one,
except in cases like "2>&1":
snprintf(cmd, MAXPGPATH, "%s\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &%s", SYSTEMQUOTE, postgres_path,
pgdata_opt,post_opts, DEVNULL, log_file, SYSTEMQUOTE);
but there's nothing in our docs saying this is necessary ...
regards, tom lane