LINUX.ORG.RU

Сообщения Sorcerer

Пропадают строки при многопоточной записи в stdout и перенаправлении вывода

Форум - Development

Столкнулся с проблемой пропадания строк при многопоточной записи в STDOUT_FILENO (т.е. write(), не fwrite()).

Нашёл в интернете одну прошлогоднюю программу с описанием подобной проблемы и слегка её подпилил:

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <inttypes.h>

#define NTHREADS 10

volatile int flag = 0;
void *start(void *arg) {
    char msg[255];
    int res;
    snprintf(msg, sizeof(msg), "hi from %"PRIxPTR"\n", (uintptr_t)arg);
    if ((uintptr_t)arg == NTHREADS - 1)
        flag = 1;
    while (!flag) ; /* thread barrier */
#if 1
    res = write(STDOUT_FILENO,msg,strlen(msg));
    if (res != strlen(msg))
        fprintf(stderr,"Failure: %i %s\n",res,strerror(res));
#else
    fputs(msg,stdout);
#endif
#if 1 /* work extra hard to flush output (makes no difference) */
    fflush(NULL);
    fsync(STDOUT_FILENO);
    sync();
#endif
    return NULL;
}

int main() {
    uintptr_t i;
    pthread_t id[NTHREADS];

    for (i =0 ; i < sizeof(id) / sizeof(id[0]); i++) {
        int ret = pthread_create(&(id[i]),NULL,&start,(void *)i);
        if (ret)
            fprintf(stderr, "pthread_create: %s\n", strerror(ret));
    }
    for (i =0 ; i < sizeof(id) / sizeof(id[0]); i++) {
        pthread_join(id[i], NULL);
    }
    return 0;
}

Компилируем:

$ gcc -Wall tmp.c -lpthread

Запускаем:

$ ./a.out | wc -l
10

Кажется, что всё нормально, но перенаправим вывод в файл, и начнутся чудеса:

$ ./a.out >o && wc -l o
2 o
$ ./a.out >o && wc -l o
2 o
$ ./a.out >o && wc -l o
4 o
$ ./a.out >o && wc -l o
3 o
$ ./a.out >o && wc -l o
3 o
$ ./a.out >o && wc -l o
2 o
$ ./a.out >o && wc -l o
3 o

Но если перенаправлять в существующий файл (дописыванием в конец):

$ rm o && touch o && ./a.out >> o && wc -l o
10 o
$ rm o && touch o && ./a.out >> o && wc -l o
10 o
$ rm o && touch o && ./a.out >> o && wc -l o
10 o

ОС - убунта 11.4. Под рукой есть солярка, на ней проблема не наблюдается. Объясните, пожалуйста, в чём может быть проблема?

()

Mercurial: показать diff при переименовании

Форум - Development

Выполняю следующие команды:

$ hg mv file1.c file2.c
$ <редактирую file2.c>
$ hg commit

Как теперь из командной строки посмотреть изменения, которые я сделал в данной ревизии при редактировании файла?

hg diff -c отображает всё содержимое файла file2.c. hg log -p - тоже.

Правда, программа hgview показывает мне изменения, но мне хотелось бы их увидеть из командной строки.

()

Mercurial: запретить удаление ревизий в общем репозитории

Форум - Development

Есть репозиторий Mercurial (доступ по http), который используют несколько разработчиков. Вопросов 2:
1. Будут ли по команде hg push приниматься изменения, модифицирующие историю (rebase, strip и т.д.)?
2. Если будут, то каким образом запретить принятие таких изменений?

()

Ссылка на второй жесткий диск из файлового менеджера

Форум - Desktop

Ubuntu 10.10. При вставке usb-флешки или карты памяти на десктопе, в файловом менеджере и в диалогах открытия файлов (как минимум в xfce или gnome) появляется ссылка на подключенный носитель.

Я подключил по IDE второй жесткий диск (ext3), прописал его по UUID в /etc/fstab на /media/hdd1. Диск автоматически монтируется при старте и по mount -a.

Но ссылка на диск нигде не отображается. Как сделать, чтобы отображалась везде, так же как ссылка на флешку? Спасибо!

PS: в fstab: type=auto, options=defaults, dump=0, pass=2

()

Полное игнорирование пользователя

Форум - Linux-org-ru

Скажите, пожалуйста, как игнорировать не только комментарии какого-то пользователя, но и не видеть созданных им тем? В первую очередь интересует раздел новостей. Спасибо.

()

Добавить сообщение в старую тему

Форум - Linux-org-ru

Хотел добавить сообщение в тему http://www.linux.org.ru/view-message.jsp?msgid=3842559 (обновление библиотечки, которую мы в той теме доделывали). Не получилось, т.к. тема, видимо, старая.

Вопрос: можно ли всё-таки добавить туда сообщение?

()

Фрилансер! Заплати налоги и получи банку вятских рыжиков от Никиты Белых

Форум - Talks

http://belyh.livejournal.com/297644.html :

Почему бы вам не зарегистрироваться как налоговым резидентам в конкретном районе Кировской области? Например, в Лебяжьем или Свечинском, или еще каком ( можно подобрать, важно, чтобы был один, сейчас объясню почему)? Интересуют те фрилансеры, которые формируют доходы не из зарплаты (потому что в таком случае все налоги платятся у источника по месту регистрации предприятия), а как индивидуальные предприниматели. Речь идет об НДФЛ или упрощенке (предприятия, как любят говорить налоговики « НДС-зоны» не интересны, поскольку НДС в региональный бюджет не поступает).

Предложение такое.

Я выбираю район Кировской области. Живописный, но депрессивный.

Я нахожу вам помещение, где вы регистрируетесь.

Я договариваюсь с налоговой инспекцией о рабочих взаимоотношениях.

Готов организовать секретарские услуги: по оформлению декларации и других документов, по ведению переписки и т.п.

Готов отчитаться за каждую копейку, поступившую от вас в виде налогов. Тем более, что каждая копейка в бюджете района типа Лебяжьего и так будет видна. Отчитаться конкретно: какой участок дороги построен, сколько деревьев посажено и т.д.

В качестве бонуса обещаю по банке вятских рыжиков и приглашение на летний пикник (за мой счет).

()

Древнегреческая раскладка

Форум - Desktop

Есть ли в linux древнегреческая раскладка клавиатуры? У меня Ubuntu 8.10. Максимум что нашёл - греческую, полифонический вариант. Но там не хватает надстрочных знаков. Может есть какие-то сторонние раскладке, которые можно импортировать?

Спасибо.

()

xscreensaver, slideshow и русские буквы

Форум - Desktop

Установлен xscreensaver, локаль ru_RU.UTF-8. Захотелось сделать так, чтобы xscreensaver при блокировке экрана отображал случайную последовательность изображений вместе с именем отображаемого файла. Это всё настраивается в программе xcsreensaver-demo: используем glslideshow, входящий в xscreensaver. Я использую следующую командную строку для glslideshow (указывается в xscreensaver-demo):

glslideshow -root -zoom 100 -pan 30 -fade 5 -titles

Проблема заключается в том, что у меня имена файлов имеют русские буквы. Они не печатаются на экране скринсэйвера (как будто русские буквы вообще пропускаются при печати). Шрифт менять пробовал (в .Xresources добавляем строку *titleFont: -*-lucida console-*-*-*-*-12-*-*-*-*-*-iso10646-* - такой шрифт у меня в терминале xterm, где русские буквы прекрасно отображаются). Не помогло: сам шрифт меняется, но русских букв всё равно нет.

Из исходников xscreensaver у меня возникли сомнения насчет того, что он вообще поддерживает utf-8 (см. файл hacks/glx/glxfonts.c).

Подумал о заменителях glslideshow, узнал о chbg и xv, но не понял, могут ли они отображать имя файла или какой-то текст для каждого изображения.

Подскажите, если кто знает, как сделать слайдшоу с отображением русского текста для каждого изображения в скринсэйвере?

>>>

()

OpenTTD & Passenger destinations

Форум - Games

Наконец эта возможность реализуется в OpenTTD, идут не просто разговоры! Оно уже более-менее работает, хотя еще не внесено в дерево кода.

Смотрим http://www.tt-forums.net/viewtopic.php?t=9201 , качаем trunk версии 9716, накладываем патч с форума для этой версии, собираем и играем.

()

Как подклеить к AVI дорожку на нужном языке

Форум - Desktop

Имеется AVI-файл и звуковая дорожка в mp3. Насколько я понимаю, в видеофайле этого формата можно хранить код языка дорожки. Подскажите пожалуйста, как можно подклеить эту дорожку к файлу так, чтобы я смог указать и язык этой дорожки?

И смежная проблема. Если имеется звуковая дорожка, выдранная mencoder-ом в отдельный avi-файл, то язык в ней, как я понимаю, сохраняется. Сохранится ли он, если подсоединить эту дорожку к avi-файлу при помощи avimerge?

()

Странный глюк с таблицей arp во FreeBSD, никто не встречался?

Форум - Admin

FreeBSD-5.4-RELEASE-p13

В один прекрасный момент на компьютере перестал пинговаться шлюз, пакеты через шлюз ходить перестали, хотя с другими компьютерами в этой подсети связь оставалась. arp -an показывает некий мак-адрес шлюза. С другого компьютера в той же подсети отображается тот же mac-адрес у этого шлюза. Но с другого компьютера шлюз нормально доступен. Выполнил на первом компьютере arp -ad. Шлюз стал доступен. мак-адрес прежний. Что это могло быть, никто не встречался с таким?

()

Переименование файлов в UTF-8

Форум - Desktop

Не буду оригинален и предложу очередной велосипед для массового переименования файлов в кодировку UTF-8.

Программа позволяет переименовать имена файлоы из любой кодировки в UTF-8. Программа переименовывает только те файлы, имена которых не закодированы в UTF-8, остальные же не трогает. Благодаря этому программу можно безболезненно натравливать на нужные каталоги (переименование будет рекурсивным) неограниченное число раз без боязни многократного перекодирования файлов, постепенно исправляя руками проблемы, возникшие при перекодировании (ошибки доступа к файлам, слишком длинные имена и пр.). Также благодаря этому можно не бояться случая, когда у вас есть имена файлов как в кодировке локали, так и в UTF-8 (последние создают некоторые программы, игнорирующие текущую локаль).

Программа на Си, скачать можно тут:
http://irc.unilans.ru/rename2utf8.tar.bz2

()

Видеозахват цифрового сигнала

Форум - Linux-hardware

Подскажите, пожалуйста, какое железо и ОС выбрать для возможности записи цифрового сигнала на компьютере. Обязательными условиями являются исключительно удаленный доступ к записывающему серверу и полная бесшумность этого сервера. Желательно также компактный размер сервера и наличие возможности сделать из него маршрутизатор с двумя интерфейсами. Записывать хочу со спутника. Пока остановился на видеозахвате Pinnacle Miro Video Studio 500-PCI (прием сигнала по IEEE-1394), но непонятно, сможет ли она работать не в windows с заявленными производителем характеристиками (в основном интересует разрешение и частота кадров). Насчет бесшумного сервера пока ни на чем не остановился, т.к. не знаю, где искать. :) Хотелось бы, чтобы вентиляторов в нем вообще не было.

()

Зарплата - коммерческая тайна?

Форум - Talks

Имеет ли работодатель в РФ право засекречивать мою зарплату? То есть, если знание моей зарплаты третьими лицами каким-либо образом нанесет убытки моей компании, будет ли эта компания иметь право на возмещение мной этих убытков в случае подписания договора о неразглашении, в котором к коммерческой тайне отнесены "сведения о вознаграждении, получаемом сотрудниками общества"?

()

TV tuner + FreeBSD 6.0

Форум - Desktop

Подскажите, пожалуйста, какой из современных или не очень ТВ-тюнеров (которые сейчас продаются), имеющих возможность записывать сигнал с видеомагнитофона, может работать во FreeBSD 6.0?

()

Видеокарта nvidia, монитор, телевизор и 2 пользователя

Форум - Desktop

На домашнем компьютере работают 2 пользователя. gdm запускает 2 X-сервера, чтобы была возможность переключаться между "экранами" пользователей без разлогинивания (ctrl+alt+f9, ctrl+alt+f10).

Имеется монитор с DVI, телевизор и видеокарта nvidia (дрова для freebsd от nvidia) с соответствующими разъемами. Необходимо сделать вывод видеофильма на телевизор независимо от работы пользователей.

У меня никак не получается это настроить. Получается сделать вывод либо только на телевизор, либо только на монитор (при переключании между X-серверами :0 и :1 гаснет один из экранов). Получается также сделать вывод на телевизор и на монитор одновременно, но монитор при этом становится :0.0, а телевизор - :0.1. При попытке переключения на другого пользователя (ctrl+alt+f10) меняется изображениеи и на мониторе, и на телевизоре. Но мне нужно, чтобы телевизор показывал изображение _независимо_ от переключений между пользователями.

Подскажите, пожалуйста, как это настроить.

()

FreeBSD и мониторы Samsung с багофичей "без кнопок"

Форум - Desktop

Не получается изменить яркость монитора. Система FreeBSD 6.0, видеокарта Nvidia 5200fx с последними родными дровами. В программе nvidia-settings нет возможности что-то изменить, хотя нужные настройки (AllowDDC*) в xorg.conf (xorg 6.9) имеются. На сайте nvidia я видел, что моя видеокарта должна поддерживать ddc. Программа dcccontrol не собирается под FreeBSD.

Я даже могу отказаться менять настройки монитора "онлайн", а не против загрузиться куда-то еще, изменить и забыть. Но у меня на жестком диске только одна ОС, поэтому я не могу загрузиться другой системой. Пробовал загружаться с двух различных Live CD Windows - ничего не получилось (MagicTune не устанавливается, а без него тоже параметры монитора не меняются, несмотря на то, что на одном из LiveCD был и заработал драйвер nvidia с программой, аналогичной nvidia-settings).

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

Не существует ли каких-нибудь Live CD, например, с Linux, в которых уже есть нужный софт для управления? Или каких-нибудь других способов быстро поменять параметры?

()

Многопотоковая FTP-качалка с запросом в нестандартный FTP-поиск

Форум - Desktop

Не подскажете, существует ли для unix программа - FTP-качалка, которая позволяет при старте закачки делать запрос по имени и размеру закачиваемого файла в FTP-поиск? Меня интересует не один из публичных FTP-поисков типа files.ru, а возможность настройки программы для работы с любым другим поиском (в моем случае - с поиском по внутрисетевым ресурсам моей локальной сети).

Например, в программе FlashGet (под Windows) существует возможность указать строку GET-запроса с переменными {filename}, {filesize} и {maxhit} внутри строки, вместо которых программа вставит соответственно имя, размер и максимальное количество найденных ссылок. После получения результата запроса FlashGet просто ищет ссылки в полученном http-ответе.

()

Лицензии на провайдерскую деятельность отменяются?

Форум - Talks

Или я чего-то не понял?

Вот что пришло мне в рассылке от Гарант (subscribe.ru):

[ссылка: http://www.garant.ru/hotlaw/files/f05079.rtf?mail] Федеральный
закон от 2 июля 2005 г. N 80-ФЗ "О внесении изменений в Федеральный закон
"О лицензировании отдельных видов деятельности", Федеральный закон "О
защите прав юридических лиц и индивидуальных предпринимателей при
проведении государственного контроля (надзора)" и Кодекс Российской
Федерации об административных правонарушениях"
Принят Государственной Думой 8 июня 2005 года
Одобрен Советом Федерации 22 июня 2005 года (документ в формате rtf)


Существенно сокращается перечень видов деятельности, подлежащих
лицензированию. Ранее в указанный перечень было включено 125 видов
деятельности, в новой редакции п. 1 ст. 17 Федерального закона от 8
августа 2001 г. N 128-ФЗ "О лицензировании отдельных видов деятельности"
предусматривается только 103. Со дня вступления в силу изменений
прекращается, в частности, лицензирование распространения лекарственных
средств и изделий медицинского назначения, перевозок пассажиров на
коммерческой основе легковым автотранспортом, публичного показа
аудиовизуальных произведений в кинозалах, ветеринарной деятельности,
производства табачных изделий. Предусматривается дальнейшее поэтапное
сокращение перечня лицензируемых видов деятельности. С 1 января 2006 г.
под сокращение попадают 9 видов деятельности, в частности, оценочная и
аудиторская деятельность. От обязанности получать лицензию с 1 января 2007
г. освобождаются организации и индивидуальные предприниматели,
осуществляющие следующие 5 видов деятельности: туроператорскую,
турагентскую деятельность, проектирование, строительство зданий и
сооружений и инженерные изыскания для строительства зданий и сооружений
(за исключением сооружений сезонного или вспомогательного значения). Кроме
того, со дня вступления в силу технических регламентов прекращается
лицензирование еще 15 видов деятельности, в частности, разработки,
производства, ремонта и испытания авиационной техники, эксплуатации
взрыво-, пожаро- и химически опасных производственных объектов,
геодезической, картографической деятельности и некоторых других.

Оптимизируется порядок получения лицензий. Так, сокращается перечень
документов, представляемых в лицензирующий орган, сокращается срок
принятия решения о выдаче лицензии с 60 до 45 дней. По заявлению
соискателя лицензии или лицензиата в отношении отдельных видов
деятельности, лицензирование которых осуществляется в целях защиты
имущественных прав и законных интересов граждан, может применяться
упрощенный порядок лицензирования при условии заключения соискателем
лицензии или лицензиатом договора страхования гражданской ответственности
либо при наличии у лицензиата сертификата соответствия осуществляемого им
лицензируемого вида деятельности международным стандартам.

Также изменяется порядок осуществления лицензионного контроля. Вводится
статья, посвященная ответственности должностных лиц лицензирующих органов
при осуществлении лицензирования конкретных видов деятельности.

Федеральный закон вступает в силу по истечении 10 дней после дня его
официального опубликования, за исключением отдельных положений, для
которых предусмотрены иные сроки вступления в силу.

()