![]() |
|
Модераторы: xvr |
![]()
|
|
| annushka89 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Спасибо сайту, уже неплохо освоила с++.
Люди, скажите, можно ли написать программу(С,С++), и в коде одной программы что-то написать, чтобы в run-time из одной программы запустить другую(к примеру, объектик программы "Hello, world!!!") Привидите пример пожалуйста, если это не сложно |
|||
|
||||
| InvalidProperty |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
это что? запустить объект программы? Запустить объектный файл, типа .o, .so на выполнение или запустить на выполнение команду из текущего процесса? Если последнее, то
для достижения пущего эффекта, этот пример в скомпилированном виде нужно запускать с правами рута. ссылка на маны http://www.opennet.ru/man.shtml?topic=exec...3&russian=5 так же можно получить по
-------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
||||
|
|||||
| annushka89 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
спасибо, я имела ввиду есть какие-нибудь способы, чтобы из одной программы запускать другую и как это программно реализовать???
|
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
annushka89, блин, а я что написал???
ты же уже написала что неплохо освоила С++, я не делал скидку на нубизм. ЗЫ еще раз перечитай то, что я запостил -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| annushka89 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
спасибо
|
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
annushka89, пожалуйста. Обращайся.
Если вопрос закрыт - закрой тему. -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
а еслиб и вправду запустила? |
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
azesmcar, как говорил хацкер Падла из Фальшивых Зеркалов Лукьяненко:
Это сообщение отредактировал(а) InvalidProperty - 30.4.2009, 13:34 -------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
InvalidProperty
Ну вот она бы и проверила, в первую очередь, под пользователем root |
|||
|
||||
| volkrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 11.5.2009 Репутация: нет Всего: нет |
InvalidProperty, а че ты девушки подлянку то делаешь?
человек с просьбой обратился, надеясь на помощь, доверяя вам, а вы ему ### в ответ Это сообщение отредактировал(а) volkrey - 27.5.2009, 09:15 |
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 356 Регистрация: 31.10.2007 Где: Россия, Казань Репутация: 1 Всего: 9 |
volkrey, да ты вовремя пришел, дорогой. Ты в следующий раз подревнее тему поищи. Проблема не во мне и не в девушке, которая, кстати сказать, благодарной осталась, а в том, что некоторые люди юмора не понимают в силу своей возрастной категории или каких-либо тараканов в голове, таким людям очень сложно понимать других людей.
-------------------- dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null echo $0 >> $0 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
кстати девушки давно не видно...видимо запустила все таки |
|||
|
||||
| volkrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 11.5.2009 Репутация: нет Всего: нет |
может быть,но все равно не по-человечески это
|
|||
|
||||
| scriptkiddie |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
почитал про эту функию exec.ужаснулся.вывод не верь ,не бойся ,не проси
|
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Браво!
-------------------- In silico |
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Возник вопрос в эту тему.
Использую execl(). Задача - последовательный запуск двух процессов. (2 приложения в исполнаяемых файлах). Код:
После компилляции (В NetBeans все делаю) запускаю скомпиленое приложение с правами root из под консоли. Получаю сообщение "ошибка сегментирования". С чем связано? Неправильное использование функции? -------------------- In silico |
|||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
Во-первых правильный вызов должен быть таким
Во-вторых, в случае успешного выполнения exec никогда не возвращает управление, так что второй вызов execl у вас будет сделан только если первый закончился неудачей. |
|||
|
||||
| svlary |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
Смотрим man на ececl :
Теперь все понятно ? Т.е. первый элемент ДОЛЖЕН указывать на ИМЯ ФАЙЛА ! |
||||
|
|||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Спасибо! Возник резонный вопрос: каким образом из одной программы можно запустить 2 и более приложений? -------------------- In silico |
|||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
||||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Благодарю!
man fork - мне в помощь! Добавлено через 14 минут и 5 секунд Проверьте пожалуйста синтаксис:
Таким образом используется? -------------------- In silico |
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
-------------------- In silico |
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
И все же...
-------------------- In silico |
|||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
примерно так:
|
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Почему-то запускает только один процесс.
Использовал код который привел vinick а так же свой вариант:
В моем случае запускается только proc1 (тот, что родительский). А требуется запуск 2х процессов. Это сообщение отредактировал(а) Zerstroer - 8.10.2009, 11:10 -------------------- In silico |
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Оба процесса в обоих случаях запускается. Как сделать так, что бы управление оставалось в программе? следить за pid и за ppid?
Это сообщение отредактировал(а) Zerstroer - 8.10.2009, 13:22 -------------------- In silico |
|||
|
||||
| svlary |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
В КАКОЙ - программе ?! После завершения системного вызова execl "старой" программы уже в памяти нет! Ее сегмент кода замещен кодом из файла, который Вы указали в вызове execl. Поэтому, (на тот случай, если системный вызов не сработал) сразу после вызова нужно ставит строки : /* Возврат из вызова execl однозначно указывает на ошибку */ syslog(LOG_CRIT, "Error at execl(%s) %m", proc_name); exit(EXIT_FAILURE); |
|||
|
||||
| massiv |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.9.2009 Репутация: нет Всего: нет |
не совсем понятно, зачем вам следить за тем што происходит с процессми запущенными execl, после запуска оин начинаюит жить своей жизнью. Другое дело , если вы хотитите заставить родительский процесс делать ещё што то помимо создания 2-х дочерних процессов, наспимер дождаться завершения одного из дочерних порцессов. В таком случае што вам мешает это сделать? Пишите нужный ком в родительском и всё, like that:
|
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
massiv,
ясно же написано: каждая функция из семейства функций exec* может возвращать ошибку -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: нет Всего: 3 |
Спасибо всем, уважаемые, задача была выполена. Реализация найдена.
-------------------- In silico |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |