Команда paste ожидает имена файлов, а не шаблоны, в качестве аргументов. Когда вы набираете что-то вроде «вставить часть1 *» в приглашении оболочки, оболочка раскрывает шаблон «часть1 *» в набор имен файлов (например, часть11 часть1.а часть1 и более) и вызывает вставку со всеми эти имена. Было много написано о unix концепциях и синтаксисе оболочки, поэтому вы сможете легко их найти.
Если вы измените свою программу на:
sprintf(buffer, "paste .tmp/part%d*", i);
execlp("/bin/sh", "sh", "-c", buffer, NULL);
Она должна работать , Я не совсем попробовал это сделать, но вы точно не опубликовали полную проблему, так что ...
#include <stdio.h>
#include <unistd.h>
int main() {
char buffer[1000];
sprintf(buffer, "paste *.c");
return execlp("/bin/sh", "sh", "-c", buffer, 0) ? 1 : 0;
}
Это полная версия, которую вы можете сделать всего за минуту то, что