On Fri, Jul 23, 2010 at 02:47:24PM +0400, Dmitry A. Zhiglov wrote: > >> Уважаемое сообщество, прошу помощи в понимании следующей ситуации. > >> > >> Есть программа на С под задачу - зайти через прокси в интернет (squid > >> 2.6STABLE12 + ad), забрать файл с данными (три цифры внутри файла) и > >> положить его в папку. И вот так с частотой 1 раз в секунду. > >> > >> Вчера наблюдал ситуацию, когда в консоль программа писала значения > >> один раз корректные, затем нули, затем опять корректные значения. > > > > попали в момент перезаписи файла? он ведь и перезаписывается раз в секунду > > как раз наверно? > > > Узнал следующее. Данные формирует php скрипт, о перезаписи файла речь не идет. > > > > > >> Данные у источника в интернете не изменялись "в нуль", это > >> проверялось. Лечилось перезапуском программы. > >> > >> Программист утверждает, что программа тупая как валенок. Забирает по > >> http то, что ей отдает сервер. > > > > что отдаёт программа когда в файле один только EOF? > > > Байт в байт возвращает, что получил. Данные парсятся как раз по > управляющим байтам.
Думаю, вопрос Дениса бил "как точно парсятся". Если делается fscanf() (или sscanf() или вообще *scanf()) или strtod()/strtol(), проверяется ли заранее, строка пуста ли? Если такой проверки нет и по какой-то причине wget выдаст празный файл, то *scanf() и strto*() выпарсят с него один нуль. Проверьте каким-то образом, wget не выдает ли 0-length files - или допишите програму чтоб проверяла, не пустая ли строка прежде чем парсить. Всего лучшего, Петр -- Peter Pentchev r...@space.bg r...@ringlet.net r...@freebsd.org PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 because I didn't think of a good beginning of it.
signature.asc
Description: Digital signature