Если вам нужен только fork + execvp в смысле запуска другого процесса, который читает из канала (как в вашем примере), то ответ, данный Эриком, на 100% соответствует вашему желанию (+1 на этом).
В противном случае, если вам нужно поведение real fork, вам не повезло под Windows, поскольку такой вещи не существует. Хотя, с помощью множества хаков, это может быть достигнуто, вроде. Cygwin имеет рабочую реализацию форка, которая создает приостановленный процесс и использует setjmp и разделяемую память, чтобы овладеть его контекстом и вручную скопировать стек и выполнить кучу в несколько сложном «танце» между родителем и потомком. Это далеко не красиво и не слишком эффективно, но это отчасти работает, и, вероятно, настолько же хорошо, насколько это возможно для операционной системы, которая изначально не поддерживает его.