nixp.ru v3.0

30 мая 2017,
вторник,
16:05:54 MSK

DevOps с компанией «Флант»
Аватар пользователя lexx
lexx написал 2 февраля 2006 года в 15:24 (374 просмотра) Ведет себя как мужчина; открыл 41 тему в форуме, оставил 143 комментария на сайте.

Не подскажите как программе послать строку больше чем 256 символов…

Программа написана на sh берется первых 256 символов а все остальное проглатывается…

Если можно это изменить хотелось бы узнать как…

Просто решение на использование параметров через файл не оч подходит…

————————————————————————

OS: Sun solaris

Machine hardware: sun4u

OS version: 5.6

Processor type: sparc

Hardware: SUNW,Ultra-5_10

Uncle Theodore

Не дублируй посты, пожалуйста.

Good Luck,

UT

lexx

Sorry, просто честно я не знал куда можно это написать…

Честно говоря… мне нужно это срочно…

Может это поможет:

Я создал файлик и внутри него написал слово длинной 1024 символа 'X'

./xxx.sh `cat fileWith1024X` все пошло…

а когда

./xxx.sh XX…X

XX…X

word too long

Я понимаю что там просто output cat’a пишется в аргументы моей xxx но шелл тогда не отслеживает длину… может можно как нить и мою длину не отслеживать…может есть какая надстройка…

Я бы рад использовать файл да только по документации местной нужно чтоб аргументы вручную не через файлик…

Best Regards,

Sergey

myst

IMHO больше некоторого предела не передашь. Обоснуй заказчику, что так не пойдёт и сделай через файл. Да и какой идиот будет передавать тааакую строку через параметры? Так или иначе она будет где-то в фале храниться.

lexx

Дело в том, что параметр формируется на основе копирования тестерами названий объектов с нескольких терминалов в один(посредством использования несколких экранов или с помошью SecureCRT or X-win), и выполняют тесты с параметрами во много привышающие 256 символов…

А фича в том что нужно !ВСЕ! параметры засунуть в один argv и выполнить один раз, много раз тоже не пойдёт!

Ну если нет конечно решений то делать нечего…

Best Regards,

Sergey

Fatal

А так пропрёт?

echo argvs… | ./xxx.sh

Если да, то можно написать прогу на Си из нескольких строчек, которая будет принимать строку и запускать её как «echo argv | ./xxx.sh», с помощью функции system()

и тогда бинарник можно будет запускать как ./a.out argvs…, если конечно не устраивает запускать как echo argvs… | ./xxx.sh

Формирование строки можно сделать и в С++, что бы было проще, к примеру использовать std::string

Или на крайняк можно запускать такую команду ./xxx.sh `cat fileWith1024X` тоже с помощью system(), но предварительно записать во временный файл параметры, которые были переданы в Си проге и в результате можно будет запускать как ./a.out argvs…

Или эта проблема касается не только шеловских аргументо, но и любых программ?