![]() |
|
Модераторы: xvr |
![]()
|
|
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Здравстуйте, обитатели форума.
прошу помощи в реализации такой практически возникшей передо мной задачи: Дано: - сервер FreeBSD - внешний скрипт через веб-интерфейс формирует данные - длинный список из неизвестного заранее количества float порядка сотен и одно какое особое заданное число Нужно: - вернуть номера позиций из них, которые ближе всего приближаются к заданному числу путем складывания, вычитания, умножения или деления любых из списка - делать это по возможности быстро Предполагаю написать демон под FreeBSD, который будет отслеживать появление файлов с данными, загружать этот список чисел, запускать цикл тройной вложенности, запоминать комбинацию с минимальной погрешностью и сохранять эту комбинацию в файл Вопросы такие, которые сам не могу придумать из-за того, что это моя первая задача на C: - как лучше организовать эту очередь задач на расчет? предполагается, что веб-интерфейс будет формировать какую-то очередь fifo на расчет, а потом забирать результаты - как сделать демон? пока собираюсь дописать функцию в код /usr/src/usr.sbin/daemon/daemon.c
стоит ли делать какие-нибудь разные потоки для вычисления каждого нового задания или считать одним по очереди? если сильно стоит, то я не поленюсь, научусь :) сервер не жалко, лишь бы не падала система под нагрузкой вот не пойму, как вообще организовать этот поток получения данных и отдачу? нужно как-то идентифицировать один от другого - в отдельном файле? именем файла? как там будет с блокировками? а то начнет читать, пока веб-морда в него пишет... надо какой-то файл-флаг готовности или писать из веба данные во временный файл, а потом уже готовый переименовывать? каким путем идти? думаю, надо будет юзать malloc для выделения нужного объема памяти после чтения очередной порции данных? |
|||
|
||||
| MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
как вариант, использовать какой-нибудь IPC думаю, тут лучше всего подойдут именованные каналы т. е создаем два именованных канала, в один из них веб-интерфейс пишет запрос, который обрабатывает демон, через второй он (веб-интерфейс) получает результат запрос можно оформить в виде пакета: заголовок (количество чисел) и тело (сами числа) аналогично с ответом
если критична скорость получения результата, возможно стоит обрабатывать каждый запрос в отдельном потоке но тут тоже не все однозначно, надо больше информации, чтобы ответить на этот вопрос -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
я тут надумал, что может логичнее брать данные напрямую из базы mysql, откуда их берет и готовит веб-морда
фактически, достаточно передавать только одну цифру ID набора данных для расчета, остальное можно получить прямо в коде С то есть общий алгоритм, если не делать несколько потоков, примерно такая может быть: при старте демона говорим ему параметры мускуля - сокет, базу, логин/пароль, таблицу 1. демоном читаем, если есть, файл dataset.id 2. берем из dataset.id целое id набора данных из таблицы 3. считаем и пишем в базу 4. повторить с цифры 1 так, наверное, будет проще и надежнее, чем с файлами париться? на один файл проще права дать один раз, а паузой будет id равное 0, например правда, я с мускулом пока не знаю насколько просто/сложно работать с мускулем из C что-то не пойму, это полностью самодостаточный код демона или функция отдельная? Это сообщение отредактировал(а) Larrikin - 15.8.2007, 19:30 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Считай, что это код функции main(). |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
зачем файл? нужна будет синхронизация тут лучше именованный канал, как я уже говорил -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
man 3 mkfifo, man 2 pipe и man 2 socket Это сообщение отредактировал(а) bsa - 15.8.2007, 20:24 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Larrikin,
ты С вообще знаешь хорошо? если собрался писать под какую-то ОС (в твоем случае BSD), то одним С не обойдешься нужно знание API конкретно по вопросу вот, имхо, лучшая книга + маны, маны и еще раз маны man 3 mkfifo -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
когда-то пару прог на лабораторных написал в институте вот заказал в Озоне, вроде такая же http://www.ozon.ru/context/detail/id/2355792/ пару дней с вопросами не буду приставать - пофтыкаю маны, подожду книжку... |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
фтыкаю книжку Марка Дж. Рочкинда - похоже, лучше через сокеты делать?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Unix domain sockets? или обычные? Это сообщение отредактировал(а) MAKCim - 20.8.2007, 21:07 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
для начала попробую на unix, потом вроде несложно переделывать на сетевые
только у меня что-то не компилируется пример из книжки http://www.basepath.com/aup/ex/sktex_8c.html: > gcc -DFREEBSD sktex.c /var/tmp//ccyQH9U8.o(.text+0x59): In function `main': : undefined reference to `ec_in_cleanup' вроде все аккуратно добавил, что он хотел: > ll total 24 -rw-r--r-- 1 larrikin wheel 3278 Aug 20 20:14 defs.h -rw-r--r-- 1 larrikin wheel 2228 Aug 20 20:14 ec.h -rw-r--r-- 1 larrikin wheel 964 Aug 20 20:14 extio.h -rw-r--r-- 1 larrikin wheel 210 Aug 20 20:14 logf.h -rw-r--r-- 1 larrikin wheel 130 Aug 20 20:13 macrostr.h -rw-r--r-- 1 larrikin wheel 255 Aug 20 20:13 options.h -rw-r--r-- 1 larrikin wheel 2220 Aug 20 20:13 sktex.c -rw-r--r-- 1 larrikin wheel 2077 Aug 20 20:13 suvreq.h > в книжке по С написано, что ищет в /usr/include - скопировал туда тоже, что вообще странно для BSD, скорее должно где-нить быть в /usr/local/include - тоже самое дает щас пытаюсь надеюсь найти возможность при компиляции задавать путь для поиска заголовочных файлов... Это сообщение отредактировал(а) Larrikin - 20.8.2007, 21:34 |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
хм... дело, видимо, не в бобине...
gcc -DFREEBSD -I /usr/home/larrikin/files/examples.c/ sktex.c | less /var/tmp//ccUZoeWV.o(.text+0x59): In function `main': : undefined reference to `ec_in_cleanup' /var/tmp//ccUZoeWV.o(.text+0xb7): In function `main': : undefined reference to `ec_push' /var/tmp//ccUZoeWV.o(.text+0xf7): In function `main': : undefined reference to `ec_in_cleanup' /var/tmp//ccUZoeWV.o(.text+0x13b): In function `main': : undefined reference to `ec_push' /var/tmp//ccUZoeWV.o(.text+0x149): In function `main': : undefined reference to `ec_in_cleanup' /var/tmp//ccUZoeWV.o(.text+0x1a7): In function `main': : undefined reference to `ec_push' придется еще пару дней вкуривать в азы компиляции, блин столько времени убивается на эти все отвлекающие от сути задачи нюансы языка и реализаций... |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Larrikin,
смотри если есть исходник
он расположен, допустим, в sources в директории, где находится директория sources, находится директория, допустим, inc, которая содержит include/lib.h, headers/groups.h и assembler.h тогда, находясь в ./sources, компилировать исходник нужно так
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Соображение такое - сделать программу по модели grep, то есть брать текстовые данные со стандартного входа или файла и отдавать на стандартный выход или файл...
данные - несколько (вряд ли тысячи, скорее десятки, может сотни) строк. Каждая несет один набор, состоящий из чисел, разделенных двоеточием: целое число со знаком (id) дробное число со знаком (value) на выходе в том же формате строки: целое число со знаком(id1) целое число со знаком(id2) символьная строка(action) Какой пример реализации по такой модели самый удачный и несложный? |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
так тут вообще нет ничего сложного
Это сообщение отредактировал(а) MAKCim - 2.9.2007, 15:00 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
имхо, можно обойтись и без демона... awk, perl неплохо подойдут для такой задачи. Правда, не понял логику преобразования... |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
про демона речи уже и нету, по крайнем мере пока не доказана недостаточность функциональности простого "фильтра"
реализация на интерпретируемом языке скриптов уже есть - падает после полтора-двух десятков входных строк из-за переполнения свопа. пример какой-то куцый - на простое чтение и запись, а перед работой с данными нужно проделать дофига всякой работы ведь взять кусок строки от начала до первого двоеточия, выбрать из него ноль или один знаков минус с последующими не менее одной цифры и только цифры запомнить это число как id убедиться, что такого id до сих пор не было в этом наборе данных если что не так - ругнуться в stderr и попробовать выдрать данные из следующей строки взять кусок строки от первого двоеточия до второго попробовать преобразовать его в число в обычной нотации или в научной или шестнадцатиричной и т.д. запомнить это число как value если никак не получилось - ругнуться в stderr и попробовать выдрать данные из следующей строки добавить набор из id, value в массив данных для дальнейшей работы обработать следующую строку |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
ну так проделай эту работу ты ж сам алгоритм написал -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
изобрести колесо?
боюсь, квадратное получится... наверняка уже полно отлаженных есть реализаций - работают же утилиты с файлов /etc/master.password как раз похожий набор строк... какие реализации считаются самыми удачными/проверенными? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Larrikin, смотри в сторону strtok(). Она позволяет разбивать строку разделенную чем-то на подстроки.
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Парни, помогите... не могу найти время на то, чтобы разобраться самому, как реализовать этот простой алгоритм на C.
Если кто может написать эти несколько строк кода интерфейса, чтобы можно было вставить обработку свою по аналогии примера MAKCim - заплачу 70 WMZ с протекцией примерное ТЗ в этой теме, если надо подробнее - расскажу в ICQ 129916863 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Попробуй такой код:
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
выглядит красиво, а насколько он устойчив к входным данным и всегда ли сможет принять, например, такие? -1: (подразумевается пара -1 и 0) - 1: 0 (подразумевается пара -1 и 0) 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:1 (корректно игнорить строку) 12: - 0.12123123 (пробелы после двоеточия, знака и перед переводом строки, подразумевается 12 и -0.12123123 ) и еще один момент - для обработки данных нужен массив, то есть одновременно нужны и первое и третье значения и т.п. размер массива не обязательно делать бесконечно возмножной размерности (память жалко на ошибки тратить), можно ограничить, например 1000 элементов (по-хорошему задавать бы это опциями при старте, но я там поглядел реализации и погрустнел - это еще пару месяцев фтыкать) Это сообщение отредактировал(а) Larrikin - 10.9.2007, 19:20 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Ты возьми и попробуй. Если тебе нужен исполнитель - в другой раздел.
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
вот что получилось и даже компилируется gcc ncalc.c -o ncalc:
сделал такой файлик data > cat data -1:20 0:0 1:21 выполняю ./ncalc < data получаю в консоле бесконечный цикл: invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format invalid format ^C > непонятно... похоже, не отрабатывает !feof(stdin), но что это и как должно отрабатываться я в своих книжках не нашел, в инете только готовые примеры использования, на вид такие же... |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
еще одна странность - если поставить #define MAX_DATALINE 2, то на тех же данных вывод получается такой:
> ./ncalc < data invalid format -1:20.000000 0:0.000000 1:21.000000 > очень непонятно, почему три строки обработал, а не две... |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
ну конечно, условие неверное, вот так работает ожидаемо:
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
не могу найти инфу, может ли функция возвращать массив?
или, например, указатель на масссив? просто код разрастается, получается мусора много, хочу сделать чтение потока в массив данных отдельной функцией, но не знаю как... |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Если писать на с++, то там никаких проблем нет, если возвращать std::vector |
||||
|
|||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
разбил этот код на файлы getdata.c main.c потом, видимо, будет ncalc.c и output.c
думаю, еще нужен будет заголовок типа ncalc.h для того, чтобы определния типа #define MAX_DATALINE 100 не надо было править во всех файлах... подскажите в Сети толковое руководство по созданию Makefile для BSD, а то везде только перевод "Мини-руководство по созданию Makefile-ов" который обещает научить в начале, но не делает этого... че-то не работает сборка по примерам из этого мини-руководства, а других нету на русском или не там ищу... да хоть бы и не на русском, только чтобы внятнее мана было о BSD много доки про makefile для портирования, а как мне простую сборку сделать-то? Это сообщение отредактировал(а) Larrikin - 21.9.2007, 13:24 |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Larrikin, попробуй воспользоваться Automake...
На самом деле формат Makefile достаточно прост (если не делать всяких условных сборок):
Например, у тебя есть 3 файла file1.c, file2.c и file3.c, их надо скомпилировать в myprog:
|
||||
|
|||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
вот вроде нашел интересную статью http://palm.opennet.ru/base/dev/auto_makefile.txt.html
но не получается заставить собирать мои жалкие несколько файлов... что не так в таком скрипте?
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
||||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) Larrikin - 22.9.2007, 10:51 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Попробуй вручную создать пустые файлы getdata.d, main.d или вместо
сделать
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
оба способа не меняют ошибку в любой комбинации...
напоминаю > uname -rs FreeBSD 6.2-STABLE |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Гм. Попробуй переименовать файл Makefile в что-нибудь другое.
Честно говоря, не понимаю ошибки. Попробуй, если и это не пойдет, создать файл с названием Makefile и туда скопировать всё содержимое без первой строчки файла compile.sh, после чего вызвать
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
нашел в магазине книжку "В.П.Солдатов. Make. Build. Autotools. Управление программными проектами"
пофтыкаю, авось разберусь, раз это такой гимор... |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
не знаю. Простые make-файлы у меня заработали с пол-пинка... хотя читать там, действительно, есть о чём |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
вот так вроде работает:
|
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
как такое может быть? я просто в шоке...
выдает: 1 -1:5.000000 2 1:10.000000 3 2:25.000000 first best: id -1 value 0 ПОЧЕМУ НОЛЬ???? |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
а блин, просто формат вывода напутал %lf %ld
|
|||
|
||||
| Larrikin |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
а вот этого я реально не постигаю... сейчас такой ncalc.h
в отдельном файле best_plus.c
выполняю ./lmake && ./ncalc < data/nice получаю фигню id(1) value(5.000000) best: id1(-1) id2(-1) act(+) result(-2.000000) err(0.000000) каким образом пять плюс пять получается минус два и как с этим бороться? мыслей вообще никаких... Это сообщение отредактировал(а) Larrikin - 28.9.2007, 10:02 |
||||||
|
|||||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
||||
|
||||
| Larrikin |
|
||||||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
а, в общем-то, всё готово похоже
best_divide.c
best_minus.c
best_multiply.c
best_plus.c
getdata.c
main.c
ncalc.h
data/bad
./ncalc < data/bad get:3:target:2.450000:best:2:/:1:2.500000:err:0.050000 можно передохнуть и начинать рефакторинг Это сообщение отредактировал(а) Larrikin - 28.9.2007, 16:30 |
||||||||||||||||||
|
|||||||||||||||||||
| Larrikin |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
поработал фильтр и стало нужно всё-таки делать демон, чтобы работало независимо...
оцените, в ту ли сторону я пошел? > ll total 8 -rw-r--r-- 1 larrikin wheel 62 Oct 7 15:12 common.h -rw-r--r-- 1 larrikin wheel 84 Oct 7 16:02 daemon.c -rwxr-xr-x 1 larrikin wheel 345 Oct 7 15:22 lmake -rw-r--r-- 1 larrikin wheel 571 Oct 7 16:02 main.c > common.h
main.c
daemon.c
собственно, функциональность собираюсь писать в daemon.c пока выдает: > ./ncalcd Child's pid is 93393 Hello, world! > |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Larrikin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 15.8.2007 Репутация: нет Всего: нет |
так я так и делаю, только че-то меня пугает огромное количество информации про сигналы без готового примера "как делать правильно" для моего случая, а ведь сигналы мне слушать все равно надо, хотя бы для корректного выхода...
main.c
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под 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. |