Если я правильно понимаю вашу ситуацию, кажется, что вы хотели бы использовать оба параметра командной строки, а также иметь возможность передавать данные в одну и ту же программу, как если бы они вводились из стандартного ввода.
Если так, то решение простое.Вы можете сделать оба одновременно:
echo "some input" | ./myprogram arg1 arg2
Параметры для программы обрабатываются отдельно от STDIN.Поэтому конфликта нет.Программа на C ++ будет обрабатывать параметры в виде массива, переданного в main()
, и обрабатывать входные данные, передаваемые ей через поток, поступающий из STDIN.
Сама программа должна определить, когда и какон обрабатывает эту информацию.Вполне возможно, что он может сначала проверить STDIN.Если вам нужно отложить ввод по каналу, вы можете использовать команду expect
.К счастью, общепринятым условием является обработка параметров командной строки перед тем, как перейти к другим действиям, таким как проверка ввода, поэтому в большинстве случаев вышеуказанное должно работать.