Показать сообщение отдельно
Старый 05.09.2009, 11:13     # 11
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от L0rd Посмотреть сообщение
Вот как все происходит. Точка входа в любое приложение - библиотечная функция mainCRTStartup() - она считывает указатель на командную строку запускаемого приложения, выполняет всю необходимую инициализацию, формирует переменные argc и argv, а затем вызывает нашу функцию main().
Ну вот это уже ближе к телу, приблизительно так я себе и представлял... Теперь, подскажите еще какой библиотеки эта самая функция mainCRTStartup()? Было бы логично предположить что glibc, но я грепнул его сурсы - нету. Посмотрел также в ядре... Где искать-то ее исходник?


Цитата:
Сообщение от L0rd Посмотреть сообщение
Опять же, смотря в каком контексте - если внутри программы есть код, который обрабатывает командную строчку (читая из argc и argv) - то подмена указателей проходит.
Собственно для этого я и собираюсь его подменить, т.к. идет сопряжение с Сишным АПИ, и мне именно в argv надо запихать свой аргумент. И я больше спрашивал не подходит ли, это я предположил что подойдет сам, я спрашиваю, можно ли, менять этот указатель? Нет ли у него опять какого-то статуса особого? Я думал что и просто перераспределить память его можно...

Цитата:
Сообщение от L0rd Посмотреть сообщение
Даже если, что-то опять пойдет не так - например, при завершении программы - можно просто сохранить старое значение указателя и восстановить перед выходом.
Не очень понял что пойдет не так? Тут конечно может быть утечка памяти (ну я же не могу высвободить память истинного argv как выяснилось), но Вы правы, именно к концу программы, и это получается уже совершенно не критично - по завершению вся память полюбому вернется системе. Или нет? Для чего еще я должен был бы восстанавливать этот указатель в прежнее значение?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума