UNIX/Linux программерам - помогите, кто чем может

Компьютеры, программы, периферия, коммуникации, интернет, программирование и т.п. Ранее назывался Hard-n-Soft.
Сообщение
Автор
Засада
Аватара пользователя

№ 0 Сообщение Засада » 20 фев 2003 06:57

Есть 2 родственных процесса (один - родитель другого).
Родительский процесс принимает tcp-соединение функцией accept.
Как мне передать созданный этой функцией сокет в дочерний процесс, чтобы обрабатывать соединение (посылать и принимать данные) уже в нем?

Незнайка
Аватара пользователя

№ 1 Сообщение Незнайка » 20 фев 2003 07:15

Опаньки, попался...

Тока сегодня тя вспоминал, а еще гадал: ты иль не ты ??????

Книжки и диски, гад, по дизассемблерам верни..... зашиваюсь......

А по теме: если accept() выполнена до fork(), то нет проблем...

Мне так кажицца, что несложно организовать весь ввод/вывод ( а прием новых соединений и дисконекты легко сделать через select() ) внутри одного процесса.

А если нужен второй, для обработки типа, то организовать обмен через канал или shared memory.

Ну да ладно - меня нужда заставляет, а ты че вдруг в юниксы подался ???????

Зы: ты в городе????? я тя через неделю ждал ))))

Зы: Зы: если это ты :shuffle:

Засада
Аватара пользователя

№ 2 Сообщение Засада » 20 фев 2003 07:30

А кто же :shuffle:

Привет Володь

Звонил сегодня, но мобилка твоя меня посылает по адресуА домашний молчит, хорошо хоть дуру свою на автоответе отключил. Завтра(сегодня) позвоню.
Ты где? Переехал?
И вопрос тогда: А что если создать второй процесс не через fork(), а через clone() с флагом CLONE_FILES чтобы таблица файловых дескрипторов была у них общей?
Последний раз редактировалось Засада 20 фев 2003 08:15, всего редактировалось 1 раз.

Незнайка
Аватара пользователя

№ 3 Сообщение Незнайка » 20 фев 2003 07:53

Переедешь с вами.... балин....

И ваще.... нашел спеца....

Может оно конечно и катит, но получится не портабельно (словечко классное). Лучше треды тогда использовать. Они тоже используют clone() в линуксе, но портабельны. Хотя с другой стороны используют общую память… что тож сам понимаешь….

Фиг знает – по fork() порожденный процесс наследует все ранее открытые файлы, а потомку, обычно, соединение передается вместо stdin/stdout:

ХЗ, попробуй. А ваще

Код: Выделить всё

// может в начале где то
int save_stdin=dup(0);
int save_stdout=dup(1);
....
int sock=accept(...);
close(0);
close(1);
dup2(sock,0);
dup2(sock,1);
if(!fork()) { ....child... }
close(0);
close(1);
close(sock);
dup2(save_stdin,0);
dup2(save_stdout,1);
А ваще я спать хочу....
На улице уже светло, звони после обеда, че нить придумкаем, угу...

Зы: я все там же.... и тел те же....

Засада
Аватара пользователя

№ 4 Сообщение Засада » 20 фев 2003 08:39

ладненько
переехать не проблема, я уж подумал что к русалке в тамбов на вечно срулил - это было бы хужее (кде еще так с кайфом пивка попьешь) :)
шучу жди звонка

Засада
Аватара пользователя

№ 5 Сообщение Засада » 20 фев 2003 20:51

Можно еще вопросик?
Тут проблемка с русскими буквами в properties. Взял у тя на диске native2ascii, но она у меня работать не хочет. пользовался когданибудь?

Незнайка
Аватара пользователя

№ 6 Сообщение Незнайка » 20 фев 2003 22:37

Ну и колбасит тебя…. Я так и не понял, чем ты занимаешься…. Может объяснишь все же… интересно даже…. А то по тел я не понял ничего…

И ваще, сынок-мальчик ((с) тихоныч), всему тя учить надо… Ты хоть в документацию иногда заглядываешь… или методом тыка ))))

Хотя ладно – сам такой…

Короче, утилитка эта хреновая только тем, что при запуске без параметров работает со стандартным выходом (stdin)… а не выводит подсказку по ключам, как остальные…. Во всем остальном полностью рульная…. Ты попробуй для прикола указать используемую кодировку с помощью ключика -encoding )))) А то похоже по умолчанию работаешь (file.encoding)…

А ваще возьми за правило сначала helpы читать, а то так и будишь всю жизнь вместо того, чтоб коньяк попивать, ошибки в абсолютно правильном коде искать ))))

ЗЫ: и еще просьбочка: не плоди оффтопики типа 4, лучше в личку пиши, если связаться не можешь…

Незнайка
Аватара пользователя

№ 7 Сообщение Незнайка » 20 фев 2003 22:39

ЗЫ:ЗЫ: На всякий случай, если я тебя правильно понял: метод Properties.save работает по разному в версиях 1.1 и 1.2 ( я про JDK)

1.1 – просто отбрасывается старший байт, потому правильно работает только с англицкими буквами.

1.2 – делается вроде как обратное преобразование в «\ uxxxx», так что получается зеркально к методу load.

Засада
Аватара пользователя

№ 8 Сообщение Засада » 25 фев 2003 04:51

ты пришел, прикинь нашел дырку ...at.net в 14 порту... :)

Незнайка
Аватара пользователя

№ 9 Сообщение Незнайка » 25 фев 2003 04:54

Это типа non-listen port чтоль, так пользуйся быстрее...)))))

Засада
Аватара пользователя

№ 10 Сообщение Засада » 25 фев 2003 04:56

а как

Незнайка
Аватара пользователя

№ 11 Сообщение Незнайка » 25 фев 2003 04:57

Второй комп у тебя под *nix заточен?

Засада
Аватара пользователя

№ 12 Сообщение Засада » 25 фев 2003 05:00

да 7.3

Незнайка
Аватара пользователя

№ 13 Сообщение Незнайка » 25 фев 2003 05:01

ЧУМА, rm -rf /

Засада
Аватара пользователя

№ 14 Сообщение Засада » 25 фев 2003 05:11

:super: заработала иоупс магия ты волшебник вот покапаюсь

Незнайка
Аватара пользователя

№ 15 Сообщение Незнайка » 25 фев 2003 05:15

Это не я волшебник, это ты ламер... Изображение с тебя...

Засада
Аватара пользователя

№ 16 Сообщение Засада » 25 фев 2003 05:20

не заржавеет прости что так телефон умер.завтра карточку куплю позвоню

Незнайка
Аватара пользователя

№ 17 Сообщение Незнайка » 27 фев 2003 02:51

По моему ты че-то не допонял, поскольку мне кажется в ХР это точно должно быть по умолчанию... В 2К помню настраивал, а в ХР у меня лично по умолчанию встало...
Но уж коль не так, то найди ключ [HKEY_LOCAL_MACHINESystemCurrentControlSetControlClass
{4D36E96A-E325-11CE-BFC1-08002BE10318}-Х-]

Потом создай новый параметр "EnableUDMA66" DWORD типа и установи значение "1". Установка параметра в "0" приведет к блокировке...

Короче:

System Key: [HKEY_LOCAL_MACHINESystemCurrentControlSetControl\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}-X-]
Value Name: EnableUDMA66
Data Type: REG_DWORD (DWORD Value)
Value Data: (0 = disabled, 1 = enabled)

А по поводу оптимизации загрузочного диска. По умолчанию в ХР он точно отключен.

Твои шаги:

System Key: [HKEY_LOCAL_MACHINESOFTWAREMicrosoftDfrgBootOptimizeFunction]
Value Name: Enable
Data Type: REG_SZ (String Value)
Value Data: (Y = enabled, N = disabled)

Только копию сохрани на всякий )))))) Я уже не помню, где я это нарыл, первое не понадобилось, второе вроде работает.... А за пиво у меня еще куча прибамбасов есть ))))) зашел бы как нить....

Зы: Сижу и от "радио 101" Изображениепрусь... они bit rate чтоль снизили, ваще без глюков шпарит, то ли модем у меня сбесился.... Просто там твой любимый "Телевизор" недавно был, только песня другая...

Незнайка
Аватара пользователя

№ 18 Сообщение Незнайка » 27 фев 2003 03:45

Это те надо малость файл sysoc.inf для начала изменить.... (%SystemRoot%inf)

Формат там такой:

program=dll.inf entry, OcEntry, program.inf entry, numeral

Скрытые компоненты, содержат слово hide или HIDE. Для того, что бы сделать компонент видимым необходимо его кикнуть.

К примеру: MSWordPad=ocgen.dll,OcEntry,wordpad.inf,HIDE,7
Сделай: MSWordPad=ocgen.dll,OcEntry,wordpad.inf,,7

Можешь даже автозамену сделать, но в ручную быстрее, там их не много...
Потом смело шагай в панель управления - «добавление и удаление программ» - «компоненты Windows», где откроются все скрытые, ранее, компоненты

И удаляй, че твоей душе угодно...

Кстати, ты заметил, что мы тут двоем общаемся.... Может имеет смысл все подчистить и в личке болтать... ну на крайняк давай по аське поставим...

Резюме????

Незнайка
Аватара пользователя

№ 19 Сообщение Незнайка » 27 фев 2003 04:22

Отлично... я понял.... )))) завтра ночером займусь...)))))

По теме:

Найди ключ [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management], и погнали:

Для начала, чтоб XP сохранял данные в памяти вместо страниц памяти на жестком диске установи параметр DisablePagingExecutive в десятичную “1”.

Для того, чтобы ядро XP работало непосредственно в памяти, а не загружало различные модули с жесткого диска параметр LargeSystemCache так же загони в десятичную “1”.

У меня его не было, но по хелпам вроде должен бы быть... Короче, нужен dword параметр IOPageLockLimit. Это вроде как должно повлиять на скорость дискового КЭШа. Тебе его нужно установить в шестнадцатеричное значение 40000 (для 512Mb)А ваще, для информации: 128Mb - 4000; 256Mb - 10000...

Ты че со своей машиной сделать хочешь ??? В космос собрался???))))) Не забудь про "синию страницу мертвых" ))))))

gekka2000

№ 20 Сообщение gekka2000 » 28 фев 2003 23:02

начиная с 17: все это твикеры различные делать умеют.

Вернуться в «Компьютерный форум»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей