LINUX.ORG.RU

Сообщения Dead

 

Нужен совет

В общем ситуация такая,

есть сервер (это отдельный процесс).

Он постоянно заблокирован на accept().

Нужно реализовать управление им через именованый pipe.

Вопрос, можно ли как-то разрулить?

Скажем так, если бы это был не accept, а ,к примеру, recv, то я б применил select на поступление данных в сокет и в пайп.

А как можно применить select к accept?

В общем суть в том, что нужно слушать одновременно и сокет и пайп.

Хочется надеяться, что вы разберетесь в моей писанине :)

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

Dead
()

Еще раз о SOCKS...

Нашел описание SOCKS 5 в rfc. Вроде неплохо разобрался.

А вот SOCKS 4 в rfc не увидел :-(

Может быть я плохо искал?

Если кто-нить видел или имеет описание формата SOCKS 4 поделитесь плиз.

И еще вопрос....

Как клиенту определить с какая версия SOCKS установлена на сервере?

Буду благодарен за любую помощь по этому вопросу.

Dead
()

Работа с SOCKS

Приветствую всех!

Подскажите пожалуйста, есть ли готовые библиотеки по работе с сокс проксями?

Появилась необходимость добавить в проект работу через SOCKS прокси...

Работал ли кто-нибудь из вас с ними, насколько сложнее по сравнению с простыми HTTP проксями?

Буду рад увидеть хоть какие-то коментарии по этому поводу.

Dead
()

Heroes 3 + wine/winex

Господа!

Кому нибудь удалось запустить Heroes 3 из под wine/winex?

Версию от Loki не предлогать, так как она самая первая и не позволяет генерить рандомные мапы :(

Хотелось бы стартануть Shadow of Death .

Поделитесь плиз конфигами и опытом, заранее благодарен...

v_dav@inbox.ru

Dead
()

С какими параметрами нужно пускать gcc?

Как заставить gcc при линковке не включать функции, у которых нет вызова?

То есть допустим я в проекте пишу функцию, которая пока еще нигде не вызывается (допустим не готова еще).

Потом после линковки проекта смотрю через nm

nm ./program

и вижу что недописанная функция все равно включена в код :-(

Как-то не хорошо получается.

Может возможно как-то через параметры gcc заставить не включать в код неиспользуемые функции.

Dead
()

О получении теущей даты...

Может кто-нить подскажет как получать дату в С в формате RFC-822.

Это то что выводит команда

$date -R

Вывод команды

$date

Получить легко, а вот как быть с $date -R ????

Подскажите плиз. А то как-то не очень хочется самому дату формировать по RFC. Делать exec команды date -R тем более не хочется.

Или придется все-таки дату вручную разгребать?

Dead
()

Re: Простой редирект. iptables ???

Подскажите плиз. Надо сделать следующее. При обращении на 53 порт (ДНС) хоста, надо сделать редирект на другой хост и на другой порт.

Можно ли сделать это с помощью iptables? И если нельзя , то с помощью чего можно сделать. А то как-то лень свой редирект писать.

Все это нужно делать только для определенных адресов.

Заранее благодарен за любую информацию.

Dead
()

Простой редирект. iptables ???

Подскажите плиз. Надо сделать следующее. При обращении на 53 порт (ДНС) хоста, надо сделать редирект на другой хост и на другой порт.

Можно ли сделать это с помощью iptables? И если нельзя , то с помощью чего можно сделать. А то как-то лень свой редирект писать.

Заранее благодарен за любую информацию.

Dead
()

Глючит с ключем -О2 .....

Подскажите плиз. Я попробовал скомпилять проект с ключем -О2, в проекте часто используется форк, обработчики сиигналов и семафоры. Глюки пошли не описуемые. Я часа четыре глюки искал. Не нашел. Убрал этот поганый ключ и все заработало. Хотелось бы выяснить. Это глюки РедХатовского gcc - 2.96(я слышал что вещь крайне неудачная) или нельзя в принципе этот ключ в описанной ситуации применять?

Dead
()

Как получить все адреса?

Вопрос такой. Есть сервер. Надо получить адреса всех интерфейсов подрубленных к сети. экзэкать ifconfig а потом ловить и разгребать его вывод не подходит, так как пошловато выглядит. Может есть какая-нить функция?

Dead
()

Вопрос по семафорам


Нужно написать функции для процессов, которые анаогичны функциям pthread_mutex_lock и pthread_mutex_unlock для pthreads, только через семафоры.
Прочитал в ALP про IPC. Возможно не все просек.
Делал так.



/* Obtain a binary semaphore s ID, allocating if necessary. */
int binary_semaphore_allocation (key_t key, int sem_flags) {
return semget (key, 1, sem_flags);
}
/* Deallocate a binary semaphore. All users must have finished their use. Returns -1 on failure. */
int binary_semaphore_deallocate (int semid) {
union semun ignored_argument;
return semctl (semid, 1, IPC_RMID, ignored_argument);
}
int binary_semaphore_initialize (int semid) {
union semun argument;
unsigned short values[1];
values[0] = 1;
argument.array = values;
return semctl (semid, 0, SETALL, argument);
}
/*Это lock*/
int binary_semaphore_wait (int semid) {
struct sembuf operations[1];
/* Use the first (and only) semaphore. */
operations[0].sem_num = 0;
/* Decrement by 1. */
operations[0].sem_op = -1;
/* Permit undo ing. */
operations[0].sem_flg = 0;
return semop(semid, operations, 1);
}

/* Это unlock*/
int binary_semaphore_post (int semid) {
struct sembuf operations[1];
/* Use the first (and only) semaphore. */
operations[0].sem_num = 0;
/* Increment by 1. */
operations[0].sem_op = 1;
/* Permit undo ing. */
operations[0].sem_flg = 0;
return semop (semid, operations, 1);
}

Используется таким макаром.

В предке .
if((mx_hash_semaphore = binary_semaphore_allocation( IPC_PRIVATE, IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR)) < 0 ){
perror("semget");
exit(-1);
}
if(binary_semaphore_initialize(mx_hash_semaphore)<0){
perror("init");
exit(-1);
}

В потомках

binary_semaphore_wait (mx_hash_semaphore);
//Критические действия
binary_semaphore_post (mx_hash_semaphore);


Но при таком раскладе все чилды иногда зависают на wait и не отвисают :((((
Подскажите что-нить полезное....
Задача ведь часто встречающаяся.
Или можете прислать аналогичные функции на v_dav@inbox.ru











Dead
()

Проблема с таймаутом :(((

Нужно сделать таймаут на функцию коннект. Делаю так. struct sigaction act;

bzero(&act, sizeof(act));

act.sa_handler = sig_alarm;

act.sa_flags = SA_ONESHOT;

if(sigaction(SIGALRM, &act, 0) != 0){

perror("Could not set up timeout");

}

else{

alarm(timeout);

}

if (connect (session->socket, (struct sockaddr *) &smtp_sock,sizeof(smtp_sock) ) < 0){ if(errno == EINTR){ printf("Can't connect to host: Timed out!\n"); } else { perror("connect to host "); } return -1; }

На моей машине все работает. Но на сервере программы при окончании таймаута прога сваливается с сообщением Alarm clock

Моя машина SuSE 8.0, gcc 2.95.3, kernel 2.4.18

На сервере РХ 7.1 кернел 2.4.9 gcc 2.96

Прога многопоточная, поэтому если валится один поток то и вся программа тоже.

Подскажите плиз что делать.

Заранее благодарен за любую помощь

Dead
()

MS Word & Quake 3(2) & Wine

Проблемка такая. Ворд не хотит сохранять файлы. Выдает Ошибку, что либо слишком много открытых файлов, либо нету места на диске. И так на всех дисках. Хотя сам файл создает, но нулевого размера. Думаю это не только в ворде. Рылся в конфиге вина, но что-то не нашел.Юзер, от которого запускаю, имеет доступ на запись. Наверное где-то что-то упустил. Подскажите плиз. Наверно это все очень просто решается. Конфиг генерился сам при установкe ./tools./wineinstall Могу куски показать, там где диски описаны. Quake 2 и 3 вешается при загрузке, видно какой-то темп-файл создать не может. WINE REGISTRY Version 2 ;; All keys relative to \\Machine\\Software\\Wine\\Wine\\Config

[Drive C] "Path" = "/mnt/win_c" "Type" = "hd" "Filesystem" = "vfat"

[Drive D] "Path" = "/mnt/win_d" "Type" = "hd" "Filesystem" = "vfat"

[Drive E] "Path" = "/mnt/win_e" "Type" = "hd" "Filesystem" = "vfat"

[Drive F] "Path" = "/mnt/win_f" "Type" = "hd" "Filesystem" = "vfat"

[Drive G] "Path" = "/media/cdrom" "Type" = "cdrom" "Device" = "/dev/cdrom" "Filesystem" = "win95"

[Drive H] "Path" = "/tmp" "Type" = "hd" "Filesystem" = "win95"

[Drive I] "Path" = "${HOME}" "Type" = "network" "Filesystem" = "win95" Писать пробовал на все диски. Эффект один и тот же.

Dead
()

У кого SuSE 8.0 помогите

При монтировании виндовой шары типа mount -t smbfs //172.31.3.91/share /mnt/smb; вроде как все нормально. Но при попытке войти потом в точку монтирования консоль намертво вешается, всяческие браузеры тоже. :( LinNeighborhood тоже вешается. Все это пробовал не только на своей машине , но и на другой машине с другой сеткой. Таже беда если попытаться смонтировать собственную самбовую шару. С другими дистрами все было нормально. Такое ощущение, что проблемы в ядре. Кто - нибудь сталкивался с подобной проблемой? Как решать?

Dead
()

Сетевое программирование

Может кто-нибудь подскажет, как программно определить список MX'ов конкретного сервера.

Это то - что выдаст команда dig some.server.com MX | grep "IN MX" | awk '{print $6}'

Или может есть уже готовая библиотека для подобной вещи?

А то делать exec данной команды как-то некультурно.

Заранее благодарен за любую помощь.

Dead
()

Разработка приложений с поддержкой локализации...

Кто-нибудь знает где про это можно почитать. И есть ли стандартное средство по созданию файлов .po Подскажите КАК ЭТО ВСЕ ПРИКРУЧИВАТЬ К ПРОЕКТУ??? В инете ничего не нашел :(

Dead
()

Ищу работу по разработке модулей ядра

Имею опыт написания драйверов для Linux. Соберу linux-дистрибутив спец назначения (embedded systems). C удовольствем подключусь в какой-нибудь проект, можно и opensorce. Удаленно или в Минске.

v_davydoff@tut.by

Dead
()

Ищу работу по разработке модулей ядра

Имею опыт написания драйверов для Linux. Соберу linux-дистрибутив спец назначения (embedded systems). C удовольствем подключусь в какой-нибудь проект, можно и opensorce. Удаленно или в Минске.

v_davydoff@tut.by

Dead
()

RSS подписка на новые темы