Возможно, вы даже можете просто повторно использовать массив argv, заменив каналы пустой строкой (которая завершает массив argv).
Итак, ваш массив был примерно таким:
"a", "b", "|", "c", "d", "e", "|", "f", "g", "h", NULL
который вы меняете на
"a", "b", NULL, "c", "d", "e", NULL, "f", "g", "h", NULL
и вуаля, вот ваши три командные строки: argv
, argv+3
, argv+7
Трудная часть с конвейерами - это настройка файловых дескрипторов stdin и stdout, а не фактическое выполнение команд.