+{
+ char **arr = gather_args(cmd, ap);
+ pid_t ret;
+
+ if (!arr) {
+ errno = ENOMEM;
+ return -1;
+ }
+ ret = pipecmdarr(fd_fromchild, fd_tochild, arr);
+ free_noerr(arr);
+ return ret;
+}
+
+pid_t pipecmdarr(int *fd_fromchild, int *fd_tochild, char *const *arr)