Здравствуйте, eao197, Вы писали:
E>Здравствуйте, MaximE, Вы писали:
>>> <...код поскипан...>
>>>
>>> Как чисто Unix-овое решение -- самый лучший вариант. Только под Windows без fork-а такого не сделаешь. Разве что под cygwin-ом работать.
ME>>У них там есть spawn — похоже на fork() + exec(). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt_process_and_environment_control.asp
E>Что-то я запутался в трех соснах. В исходном сообщении:
E>E>Задачка состоит в том, чтобы нарезать командную строку, полученную из конфигурационного файла на отдельные аргументы для последующей передачи этих агрументов в один из 6 вызовов семейства exec. Как это сделать? Хочется воспользоваться чем-нибудь уже готовым и лучше всего системным, чтобы не пришлось отлавливать потом баги в очередной сторонней библиотеке.
E>Т.е., раз exec, значит нужно запустить новый процесс вместо старого. Тогда вообще ничего мудрить не нужно -- через exec зовем shell и скармливаем ему всю строку параметров, без fork-а.
E>Или же не вся задача была озвучена.
Скажем так, задача имеет два направления: практическое и общепознавательное.
Естественным образом практическое направление имеет для меня более высокий приоритет.
Поэтому если не будет найдено другое решение, я реализую fork — execv c вызовом default shell, которому будет передано 2 параметра: -с и ищеющиеся из конфигурационного файла параметры. Т.е. собственно "назерка" будет изящно обойдена. Для решения практической части задачи это будет вполне достаточно.
С общепознавательной т.з. может потребоваться в самой программе иметь нарезку командной строки (не своей, а какой угодно). Здесь опять может сработать фокус с default shell. Для этого достаточно написать простенькую программку, которая будет (в общем случае не важно каким образом) отсылать родителю свои собственные аргументы, полученные из main. Но породжение нового процесса для этой цели с моей т.з. выглядит несколько тяжеловесно.
P.S. Прошу прощения, fork конечно же подразумевался.