Napisałem prosty program w języku Python do symulacji zachowania opisywanego programu. W absolutnym minimum, to stawia nas wszystkich w sytuacji mówienia o tym samym, zamiast zakładać, jak działa twój program. (Oczywiście, jeśli twój program nie działa tak, jak to opisuję tutaj, popraw mnie.)
#!/usr/bin/python
def read_a_file():
print('Type the contents of a file now.')
while True:
try:
s = raw_input('>')
except EOFError:
break
read_a_file()
read_a_file()
print('We have now read two files. Quitting.')
można uruchomić ten skrypt, należy wpisać zawartość pierwszego pliku, naciśnij CTRL-D, wpisać zawartość drugiego pliku, naciśnij CTRL-D, a program wychodzi. To wydaje się być zachowanie, które opisujesz.
Moja pierwsza myśl polegała na używaniu, jak sugerował chaos. Jednak nie mogę znaleźć żadnego wsparcia w oczekiwaniu na podłączenie zawartości pliku do procesu. (Zakładam, że zawartość plików jest inna za każdym razem. Jeśli są takie same, to oczekiwanie zadziała, po prostu umieszczając zawartość plików w oczekiwanym skrypcie.)
Muszę zauważyć, że jestem w żadnym wypadku nie oczekuje eksperta; może być na to sposób, który nie jest dla mnie oczywisty.
Moja druga myśl polegała na napisaniu skryptu w języku Python, który uruchomił twój program, i nakarmił go zawartością plików i znaków EOF. Jednak komentarze Jonathana Lefflera sprawiły, że myślałem, że echo znaków EOF nie zadziała.
Moja trzecia myśl jest cholernie kludiasta. Można napisać skrypt, który tworzy skrypt oczekiwany, podłączając zawartość plików do skryptu expect, a następnie wykonując skrypt expect. Podejrzewam, że to zadziała.
W jaki sposób użytkownik wskazuje koniec wszystkich plików? Dwie kontrolki D z rzędu? Standardowy projekt dla programów uniksowych to "pliki odczytane w wierszu poleceń, jeśli nie ma takich plików, przetwarzaj standardowe wejście". Jeśli przyjmiesz ten projekt, nie ma problemów; po prostu wywołujesz "myprogram plik1.txt plik2.txt". –