Каков наилучший способ взаимодействия с программой, которая использует имена файлов в командной строке для ввода и вывода? - PullRequest
2 голосов
/ 31 мая 2011

Мне нужно взаимодействовать с некоторыми исполняемыми файлами, которые ожидают передачи имен файлов для ввода или вывода:

./helper in.txt out.txt

Каков стандартный (и предпочтительно кросс-платформенный) способ сделать это?

Я мог бы создать много временных файлов в каталоге /tmp, но я обеспокоен тем, что создание тонны файлов может вызвать некоторые проблемы.Кроме того, я хочу иметь возможность установить свою программу и не беспокоиться о разрешениях позже.

Я мог бы просто быть специфичным для Unix и попытаться найти решение с использованием каналов и т. Д. Но потом я неНе думаю, что я смог бы найти решение с хорошими, безымянными каналами.


Моей альтернативой этому будет передача данных в stdin (все исполняемые файлы, которые мне нужны, также принимают его таким образом) и получитьрезультаты от stdout.Однако выходные данные, которые они дают в stdout, различны, и мне нужно было бы написать множество адаптеров вручную, чтобы сделать это унифицированным (выходные данные через файлы соответствуют одному и тому же стандарту).Мне не нравится, как это заблокировало бы мою программу в нескольких форматах.

1 Ответ

2 голосов
/ 31 мая 2011

Не обязательно правильный или неправильный ответ.Чтение / запись в stdin / out, вероятно, более чистая и не использует дисковое пространство.Тем не менее, использование временных файлов тоже прекрасно , если вы делаете это безопасно .В частности, см. Справочные страницы mktemp и mkstemp для функций, позволяющих создавать временные файлы для кратковременного использования.Просто почистите их потом (unlink), и это нормально для использования и манипулирования временными файлами.

...