Выборочная синхронизация в iCloud диск

Есть более простое решение в 4 действия и небольшой shell-скрипт:

  1. сделать свой собственный каталог шпуля:

    /usr/Бен/судо команды mkdir /var в/золотник/my_printer
    
  2. напишите следующий скрипт в ваш обычный местный bin директории скажем /местные/Бен

    кд /местные/Бен
    

    скопируйте следующий внутри my_spooler:

    #!/Бен/ш
    
    # перейти в директорию спула 
    компакт-диск в /var/катушка/my_printer
    
    # основной цикл: цикл до конца времени
    а : ; у
    
     # проверка любой вновь прибывших текстовый файл
     для _file В * ; делать
    
     # если _file-это обычный файл, распечатать и удалить его (параметр-R для ЛНР)
     [ -Ф "${_file}" ] && ЛНР -Р "${_file}"
    сделано
    
     # не петли как дурак
     сон 300
    сделано
    
  3. сделайте свой my_spooler исполняемый файл:

    у чмод+х my_spooler
    
  4. запустить его:

    my_spooler &
    

    он должен начать без полного пути, если /местные/Бен находится в вашем пути если это не так, запустите его следующим образом:

    /местные/Бен/my_spooler &
    

    Концовка & означает запустить его в фоновом режиме, чтобы не заблокировать свой сеанс в ожидании до конца времен.

Как использовать его

Чтобы использовать его, вы просто должны переместить любой текст или PS или PDF-файл в свой собственный определенными каталоге золотник, как вы предпочитаете. Либо с поиска , либо с основной командной строки:

СР my_file.PDF-файл в /var/катушка/my_printer
+860
Thayne 3 нояб. 2010 г., 22:04:30
25 ответов

На самом деле существует несколько приложений на плей-магазине Google. Некоторые из них даже есть php. Мой личный фаворит сервера конечную.

+955
Brian Parent 03 февр. '09 в 4:24

Я пытаюсь сделать msfupdate внутри реальных Кали сана репозиторий в Linux. Я не понимаю зависимости. для экс. У меня ни xpdf <= 3.03-11, но 3.03-10 должен быть установлен - где проблема?

Если я понимаю хорошо, <=3.03-11 не значит 3.03-10 находится вне диапазона, потому что 3.03-10 < 3.03-11 - правда. Сначала я получил сообщение об ошибке

Следующие пакеты имеют неудовлетворенные зависимости:
 libfontconfig1: поврежден: ни xpdf (<= 3.03-11), но 3.03-10 для установки
Е: ошибки, вызванные перерывами pkgProblemResolver :: разрешения, это может быть вызвано сохранил пакеты.

Я запустил apt-получить установку переустановить xpdf и это, кажется, быть установлен. Я снова попытался msfupdate, есть следующая ошибка

Следующие пакеты имеют неудовлетворенные зависимости:.
 сеть-менеджер в GNOME: зависит: сети-менеджером (> = 0.9.10) но 0.9.4.0-10 для установки
 ППС: повреждены: сети-диспетчер (<0.9.8.8-7 ~) но 0.9.4.0-10 для установки
Е: ошибки, вызванные перерывами pkgProblemResolver :: разрешения, это может быть вызвано сохранил пакеты

Также <0.9.8.8-7 не означает, что 0.9.4.0-10 находится вне диапазона , потому что 0.9.4.0-10 < 0.9.8.8-7 - тоже верное утверждение.

Мой вопрос: я не знаю, сколько ошибок зависимостей ждем, когда появиться. Я должен продолжить установку каждого вывода сообщения об ошибке вручную или есть способ лучше? Я нашел эту тему про баг. Я не знаю, но, возможно, это зависит от моей проблемы https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727070 . Может быть, кто-то может найти более умеренным название на мой вопрос.

+947
dummzeuch 21 окт. 2013 г., 23:32:36
Другие ответы

Связанные вопросы


Похожие вопросы

Какие хорошие места в интернете, чтобы исследовать квартиру, ситуации в Бергамо, Италия (и его окружение) и есть ли какие рекомендации вы можете дать тем, кто приехал из другой страны (Хорватия, немного плывите на восток) и будет оставаться там в течение двух, Может, трех месяцев?

+807
Margo Hand 21 нояб. 2014 г., 20:58:34

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

Новый 2018 Мак мини-очень заманчиво, но каков будет эффект ограничения на 128 ГБ или 256 г размер процесс?

Я в настоящее время используют Вольфрам и пакет Mathematica для этого какие-то веские аудио моделирование на 2009 16Gigabyte 2.88 ГГц 4 ядерный Mac Pro с ОС OS X Эль-Капитан установил на 256 г SSD и кучи дополнительных Сата HD. Каждый так часто, Вольфрам подошел к мертвой остановки и уходит, какие могут быть проблемы с памятью, но я не уверен.

+807
gegedvd 18 февр. 2015 г., 17:21:46

checkinstall должен судо, потому что по умолчанию он на самом деле выполняет установки. Это из-за умолчанию файл/etc/checkinstallrc, который содержит:

# Установить пакет или просто создать ее?
Установите=1

Чтобы предотвратить установку, да и просто создать пакета, выполните:

checkinstall --установки=нет
+773
Mike Hatt 5 нояб. 2014 г., 21:30:07

Если рецепт говорит, чтобы медленно тушить их с мясом, вы можете быть приятно удивлены, так как они могут гармонировать с другими вкусами. (Или нет, но он может быть стоит попробовать с меньшим количеством.)

Но в данном рецепте, не столь небольшом количестве добавляется незадолго до окончания времени приготовления, который, кажется, намеревался сохранить оригинальный оливковый аромат (немного добавлять свежую зелень в конце). Аромат рагу был разработан без оливок, несколько минут не реально. Если вы не любите оливки на пиццу, салат или закуска - оставьте их.

+772
Frozen Blood 26 мар. 2017 г., 15:25:06

Отвечая на старый вопрос, потому что это как предложение, когда искал другой ответ:

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

Я также не думаю, что ты полностью понимают использование или воздействие директив. Я предлагаю рассматривать их в документации по Apache здесь. Я думаю, что вы можете искать первый SSLCACertificateFile

Что касается моего первоначального комментария, согласно документам, SSLCertificateFile должны также загрузить промежуточными сертификаты от одного и того же файла (просто добавить промежуточные (по желанию?) корневые сертификаты с сервером.ЭЛТ). Это должно позволить вам импортировать сертификат корневого ЦС в ваш браузер в качестве доверенного центра сертификации, а не отдельного сервера сертификата(ов).

См. Также: этот ответ на дополнительные обсуждением взаимной проверки подлинности.

+631
Madhusudana Reddy Sunnapu 19 мая 2020 г., 10:13:20

Мои обновления в Fedora 20 до 25 уже давно пора. Я только что получил DVD с Linux в магазин, и ежедневное резервное копирование моего домашнего каталога и /и т. д. , сделанные с fwbackups.

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

+582
user382791 14 мар. 2021 г., 03:33:04

Как Крис говорит, аргументы вида имя_переменной=все относятся как присваивание значений переменным (которые выполняются на раз аргументы обрабатываются в отличие от (новее) -в переменная=значение , которые выполняются до начала отчетности) вместо ввода имени файла.

Что может быть полезно в таких вещах, как:

у awk '{печати $1}' ФС=/ РС='\п' файл1 ФС='\п' РС= файл2

Где можно указать другую ФС/РС в файл. Это также широко используется в:

на awk '!file1_processed file1_processed{а[$0]; далее}; {...}' файл1=1 файл2

Который является более безопасной версией:

у awk 'ШП==ФНР{а[$0]; далее}; {...}' файл1 файл2

(что не работает, если файл file1 пусто)

Но что мешает, когда у вас есть файлы, чье имя содержит = символы.

Сейчас, вот только есть проблема, когда то, что осталось от первой = это действует на awk имя переменной.

Что представляет собой допустимое имя переменной в awk и строже, чем в СГ.

POSIX требует, чтобы это было что-то вроде:

[_а-Яа-я][_а-дза-З0-9]*

С только символов портативный набор символов. Однако в/usr/xpg4/bin и/на awk Соляриса 11, по крайней мере, не соответствует требованиям в этой области и позволяет проводить любые буквенные символы в язык в именах переменных, а не просто-з-З.

Так что аргумент как Х+у=фу или =бар или ./файл foo=бар по-прежнему рассматривается в качестве входного файла, а не назначения, как то, что осталось от первой = не является допустимым именем переменной. Аргумент, как Stéphane=Chazelas.txt может или не может, в зависимости от того, как awk реализации и язык.

Вот почему в случае с awk, рекомендуется использовать:

на awk '...' ./*.тхт

вместо

на awk '...' *.тхт

например, чтобы избежать проблем, если вы не можете гарантировать, имя тхт файлы не содержат = символы.

Кроме того, помните, что аргумент вроде -vfoo=bar.txt может рассматриваться как вариант, если вы используете:

файл awk-Ф.на awk -vfoo=bar.txt

Опять же, с помощью ./*.тхт вокруг этого (с помощью ./ префикс также помогает с файлами под названием - что иначе , как awk понимает как значение стандартного ввода вместо).

Это также, почему

#! /usr/Бен/на awk -е

shebangs не работают. В то время как пар переменная=значение , можно обойти путем фиксации в АГДУ значения (добавить ./ префикса) в начать заявление:

#! /usr/Бен/на awk -е
Начать {
 Для (я = 1; я < АГДС; я++)
 если (АГДУ[я] ~ /^[_[:альфа:]][_[:alnum:]]*=/)
 АГДУ[я] = "./" АГДУ[я]
}
# остальное скрипт на awk 

Это не поможет с параметром, как те видели на awk , а не на awk скрипт.

Одним из потенциальных косметическая проблема, с помощью этого ./ префикс это заканчивается именем, но вы всегда можете использовать функцию substr(имя, 3) лишить его, если вы этого не хотите.

В GNU реализация awk и фиксирует все эти вопросы со своим -электронный вариант.

После , поглазеть ожидает единственный путь на awk скрипт (где - прежнему означает стандартный ввод), а затем список ввода пути к файлу только (и даже не - лечится специально).

Он специально разработан для:

#! /usr/Бен/поглазеть -е

shebangs, где список аргументов всегда являются входные файлы (обратите внимание, что вы все еще свободны для редактирования, что АГДУ список в начинаться заявление).

Вы также можете использовать его как:

поглазеть -е...вот код на awk...- е /dev/нуль *.тхт

Мы используем с пустой скрипт (/dev/нуль) просто чтобы убедиться, что те *.тхт потом всегда рассматриваются как входные файлы, даже если они содержат = символы.

+581
xerxes 18 сент. 2010 г., 12:42:31

Гораздо более безопасный способ-это просто в меню.

очистить() { osascript \
 -е 'сказать приложение "системные события" сказать процесс "терминал"' \
 -е', выберите в меню пункт "Включить" по меню 1 в меню пункт "правка" в строке меню 1' \
 -е 'сообщит' \
 -е 'вернуться'
}
+554
user66963 8 авг. 2013 г., 18:09:23

Интересный вопрос. Нет официального API для обнаружения, если в меню обмена сообщениями изменилось его состояние. Вы можете сделать это, глядя на dbus интерфейс индикатора-сообщения-службе. Снаряд как скрипт вроде этого:

 $ gdbus назвать --сессии --дест ком.каноническим.индикатор.сообщения --объектно-путь /ком/канонические/показатель/сообщения/услуги --метода com.каноническим.индикатор.сообщения.обслуживание.AttentionRequested

Есть также сигнал "AttentionChanged". Вы можете отслеживать, что, чтобы определить состояние как оно обновления.

Также, если вы заинтересованы в индивидуальные элементы в меню сообщений все свои данные экспортируются через libindicate. Можно еще libindicate слушателя на ДГУ, который получает всю информацию и сопоставляет ее другим способом.

+552
aolchawa 31 янв. 2015 г., 06:32:42

Трактор (также известный как Туо-Ла Цзи, или 拖拉机) - китайская игра на взятки, в семье Шэн Цзи партнерства на основе традиционных карточных игр.

В Трактор, защищающаяся команда пытается преодолеть атакующей команды (создателей Трамп), набрав 80 очков за раунд (с помощью короля-десяти-пяти балльной системе на основе аналогичных Тичу). Два 54-х карт (Джокер-включительно) колоды объединяются, чтобы сформировать начальную колоду, и идентичны карты образуют основу какой-то подвох-типа.

+543
Aaron Escoto 24 мар. 2012 г., 20:03:48

У меня проблема с почтой (не Gmail) приложение на моем HTC ощущение, что я предполагаю, является частью ИК-3. Я использую сервер, который имеет недоверенный сертификат, и каждый раз, когда я пытаюсь обновить мою электронную почту, диалог, запрашивающий сертификат может быть принят всплывает. Проблема в том, что когда я пытаюсь отправить сообщение электронной почты из этой учетной записи сообщения застревают в папке "исходящие", пока я вручную обновить почту заставляя сертификат может быть принят вновь.

Есть ли способ хранения известно/уже получили сертификаты для почтового приложения?

Спасибо!

+538
user238432 4 дек. 2012 г., 12:28:22

Уважаемый Профессор Смит:

Меня зовут Фрейя АСЭ. Я был студентом в классе по дизайну виджет на колоссальный государственный университет в 2014 году. Я пишу просить рекомендательное письмо.

После 3 лет продуктивной рабочей силы на анонимный шарикоподшипниках, я решил подать заявку на программу Кандидат мече в Калифорнийском технологическом институте и несколько внеконкурсных программ. Пока ба была большой практический опыт и хорошее использование моего обучения ЕСУ, а теперь я хочу перейти на передовые исследования потока жидкости.

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

С уважением,

Фрейя АСЭ

+519
Thomas Higson 20 авг. 2014 г., 20:14:04

Поэтому, единственное, что я могу думать, что Ubuntu не правильно установить программное обеспечение, как она не признает .запускать файлы. Я проверил "позволит запустить как исполняемый файл", но ничего.

+463
Friendly Code 31 янв. 2019 г., 11:44:27

Этот скрипт будет выводить информацию(владеть ПИД) о видимых окон.
И информация для окна, которая изменила позицию в течение 5 секунд.
Заслуга суперпользователя ответить

#!/usr/Бен/ОКР питона

импорт кварцевые
время импорта 
от импорта Фонда NSSet, NSMutableSet
деф transformWindowData(сведения):
 список1 = []
 Для в данных:
 если не В. valueForKey_('kCGWindowIsOnscreen'):
далее


 строки = ( \
 (ул. В. valueForKey_('kCGWindowOwnerPID') или '?').rjust(7) + \
 ''ул. + (В. valueForKey_('kCGWindowNumber') или '?').rjust(5) + \
 '{' + (" если В. valueForKey_('kCGWindowBounds') никого \
 ( \
 ул.(инт(В. valueForKey_('kCGWindowBounds').valueForKey_('х'))) + ',' + \
 ул.(инт(В. valueForKey_('kCGWindowBounds').valueForKey_('г'))) + ',' + \
 ул.(инт(В. valueForKey_('kCGWindowBounds').valueForKey_ (ширина'))) + ',' + \
 ул.(инт(В. valueForKey_('kCGWindowBounds').valueForKey_('Высота'))) \
 ) \
 ).я(21) + \
 '}' + \
 '\т[' + ((В. valueForKey_('kCGWindowOwnerName') или ") + ']') + \
 (" если В. valueForKey_('kCGWindowName') никого (' ' + В. valueForKey_('kCGWindowName') или ")) \
).кодировать('в кодировке utf8')
список1.добавить(строка)

 возвращение список1;

деф printBeautifully(набора данных):
 принт 'ПИД'.rjust(7) + '' + 'Винид'.rjust(5) + '' + 'х,г,Ж,Ч'.я(21) + '' + '\т[название] подзаголовок'
 печать '-'.rjust(7,'-') + '' + '-'.rjust(5,'-') + '' + '-'.я(21,'-') + '' + '\т-------------------------------------------'

 # печать textList1
 для V в набор данных:
 печати V;

#возьмите начальный набор
ДС = кварцевые.CGWindowListCopyWindowInfo( Кварц.kCGWindowListOptionAll, кварц.kCGNullWindowID)
ДС = отсортированный(по ватерлинии, ключ=лямда-к: к.valueForKey_('kCGWindowOwnerPID'))

#конвертировать в читаемый формат
textList1 = transformWindowData(ДС);

#напечатать все, что мы имеем на экране
печати всех окон:'
printBeautifully(textList1)

печать 'перемещение целевого окна'
время.сон(5)

#захватить окно данных второй раз
wl2 = кварцевые.CGWindowListCopyWindowInfo(Кварц.kCGWindowListOptionAll, кварц.kCGNullWindowID)
textList2 = transformWindowData(wl2)

#проверить разницу
Вт = NSMutableSet.setWithArray_(textList1)
Вт.minusSet_(NSSet.setWithArray_(textList2))

#напечатать разница
printBeautifully(Вт)

Выход:

все окна:
 ПИД Винид х,г,Ж,Ч [название] подзаголовок
------- ----- --------------------- -------------------------------------------
 204 2 {0,0,1280,800 } [Окно] Рабочего Стола
 479 36 {0,0,1280,800 } [Док] Рабочего Стола Картинка DefaultDesktop.jpg
 731 2893 {640,0,640,800 } [Искатель] /пользователи/волк/загрузок
 731 260 {-608,-1440,2560,1440 } [Искатель]
 731 259 {0,0,1280,800 } [Искатель]
 1301 321 {0,366,1280,411 } [Аудио Журналы] Аудио Приложения 
Перемещение целевого окна
 ПИД Винид х,г,Ж,Ч [название] подзаголовок
------- ----- --------------------- -------------------------------------------
 1301 321 {0,366,1280,411 } [Аудио Журналы] Аудио Приложения 
+434
freedomfry 24 июн. 2019 г., 12:00:14

Это не сигарета горит. Это грибок/вирусные/бактериальные инфекции, вызванные чрезмерным поливом, и не хватает света. Вижу плохо аннотированный рисунке ниже, который показывает типичную первичное заражение сопровождается кольца роста, как проблема растет. Ficus Elastica Это растение пестролистный с белой и зеленый цвет листьев. Он не фотосинтезируют так же эффективно, как совершенно зеленый лист. Когда у вас переувлажнения корневой системы и не достаточно света, вы увидите эти пятна.

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

  • убедитесь, что дренаж из горшка. Когда воды он должен выйти на дно горшка
  • удалить растение из горшка и посмотрите на корни. Черный и мягкий сгнили, твердый и коричневый или белый Здоров
  • перенести растение в высшем состоянии свет у вас есть
  • перед повторным полива придерживайтесь палец в почву на глубину одного дюйма. Если она влажная, то не поливать пока не высохнет
+339
Jonah Kimutai 13 июл. 2021 г., 02:46:56

Покидаем авианосец с одеяло или полотенце в ней, с открытой дверью. Кошки, как правило, отдохнуть в них, как только они перестают видеть в них исключительно в качестве транспортных средств для поездок к ветеринару.

Как успокоить ее, пища-это Бог, когда он приходит с кошками; начать кормить ее рядом с вами, то оставить след, чтобы тебя когда-то она спокойно к этому относится. Продолжайте двигать еду тропе ближе, пока в конце концов она ест рядом с вами. В конце концов вам придется ее едят с руки.

Он также помогает, чтобы играть с вашей кошкой в поближе; перо игрушки (на палочке) и заставить ее прыгать.

+303
Raevan 6 дек. 2021 г., 20:51:22

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

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

+250
AlexNY 6 янв. 2020 г., 11:36:43

У меня 3 мкВ, что все многократно производить эту ошибку в консоли, и я не могу выяснить причину, вызвавшую ее. Это приводит к различным системным палатках и проблем с памятью.

(В настоящее время неполадок на Yosemite 10.10.3 на имак 2011, 8 МБ ОЗУ.)

5/6/15 11:21:31.433 я ком.яблоко.хрс.файл launchd[1]: (ком.яблоко.хрс.файл launchd.домен.пользователей.502) услуги "ком.яблоко.хрс.файл launchd.одним движением.0x10000038.AppleSpell" пытались захватить конечной точке "его (Яблоко)_OpenStep" от собственника: ком.яблоко.хрс.файл launchd.одним движением.0x10000004.AppleSpell

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

Насколько я понимаю, это созданные системы широко системы проверки правописания. Эта ошибка бьет сильнее всего, когда у меня какие-либо приложения открыть почты (почты, Outlook, авиапочтой и т. д.).

Кто-то нашел исправить, чтобы пресечь эту проблему в зародыше? Я бы хотел, чтобы избежать отключения полностью, но если уж на то пошло, есть ли способ сделать это? Я уже отключенной опцией в Yosmites prefpane по.

Любая помощь будет чрезвычайно ценится. Мне не хватает моей вменяемости.

+200
xieyonn 8 апр. 2011 г., 18:38:42

Если вы спровоцировать GPS-координаты (и, возможно, беспроводной доступ в интернет), то они будут значительно разрядит батарею, как и любое другое GPS приложение будет делать.

Если вы запускаете событий по дате/времени и т. д. тогда вы будете испытывать минимальное снижение заряда аккумулятора. Часто преимущества эти приложения весят за любой недостаток, т. е. превращения вашего яркость или тайм-аут экрана вниз, когда аккумулятор становится низким.

+173
Ruut 14 нояб. 2017 г., 13:13:32
#!/бин/Баш

ввод=""

Эхо "делает стены должен быть отправлен?"
вход читать 

если [ $вход="да" ]; затем
 Эхо "посылает сообщение всем пользователям"
 Эхо ""
еще если [ $вход="нет"]; затем
выход
интернет
интернет
эхо "это перезагрузки или выключения?"
 вход читать 
если [ $вход="перезагрузка" ]; затем
перезагрузка
Элиф [ $ввод=" "выключение"" ]; затем
еще
Эхо ""
Эхо "до свидания"
+158
Istiaque Ahmed 20 мая 2014 г., 04:02:32

user3439894 подтвердил, что это ожидаемое поведение. Я нашел обходной путь, однако, на пути избранного.папку всю вшита данные plist в Dropbox и использовать эту папку в качестве целевой для символической ссылке, а не отдельного файла. Что, кажется, работает нормально.

+53
bogiv 20 дек. 2021 г., 16:02:39

Я обычно проверить это, используя ISO-образ LiveCD. Я часто беру .ISO-образ и записать его на USB флешку с помощью USB-создатель Ubuntu имеет.

К сожалению, это означает, что у вас есть, чтобы загрузить больше вещей, как вы в конечном итоге загрузки дважды каждой версии:как LiveCD и сразу в пакеты.

Даже если жить(USB или CD) не работает, там может быть небольшая вероятность обновления не так хорошо, как вы надеялись. Это никогда не помешает иметь резервную копию. Я обычно использовать rsync вроде этого (после подключения в качестве внешнего накопителя, но в этом случае даже другой раздел будет работать):

в rsync-Аух-исключить '.в' / /СМИ/<устройство>/<folder_you_want_backup_in>/
+31
Toshio Nishimura 1 сент. 2020 г., 21:25:10

Использование прямого ввода-вывода:

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

Приложение вызывает прямого ввода/вывода при открытии файла с Под д ержка флаг.

Например:

инт ФД = открыть( имяфайла, флагов o_rdonly | использовании флага O_DIRECT );

Прямой ввод-вывод в Linux изворотливая и имеет некоторые ограничения. Применение буфера ввода-вывода должны быть страницы-выровнены, и некоторые файловые системы требуют, чтобы каждого запроса ввода-вывода быть кратны размеру страницы. Это последнее ограничение может сделать чтение/запись последней части файла сложно.

Простой в код способ обработки опережающего считывания в приложении можно сделать с помощью fdopen и установив большие страницы-выровненный буфер с помощью posix_memalign и setvbuf:

// должны действительно получить размер страницы с помощью sysconf()
// но остерегайтесь систем с несколькими размеров страницы
#определите выравнивание ( 4UL * 1024UL )
директива #define BUFSIZE ( 1024UL * 1024UL )
типа char *буфер;
...

инт ФД = открыть( имяфайла, флагов o_rdonly | использовании флага O_DIRECT );
Файл *файл = fdopen( ФД "РБ" );

инт РЦ = posix_memalign( &буфер, выравнивание, BUFSIZE );
РЦ = setvbuf( файл, буфер, _IOFBF, BUFSIZE );

Вы можете также использовать вызов mmap() , чтобы получить анонимный память использовать для буфера. Это имеет то преимущество, что, естественно, выравниваются страницей:

...
типа char *буфер = вызов mmap( null, то BUFSIZE, PROT_READ | флаг prot_write,
 MAP_ANONYMOUS | MAP_PRIVATE, -1, 0 );
РЦ = setvbuf( файл, буфер, _IOFBF, BUFSIZE );

Затем просто использовать fread операционной()/помощи fgets() или любой файл *-тип функции чтения, которую вы хотите прочитать из файла потока.

Вы должны проверить с помощью такого инструмента, как трассированием , что фактическое прочитайте системные вызовы делать со страницей-выровнены и страницы размером буфера - некоторые библиотеки C реализаций файл *на основе потоковой обработки не использовать буфер, указанный setvbuf для всего ИО буферизации, так что выравнивание и размер может быть выключен. Я не думаю, что в Linux/glibc в это, но если вы не проверить и размер и/или выравнивание, ваш ИО звонки не удастся.

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

Разнесенная код будет делать 1 МБ для чтения впереди, когда поток буфер должен быть заполнен. Кроме того, можно реализовать более сложные упреждающего чтения с использованием потоков - один поток заполняет один буфер, другой поток(ов), чтение с полным буфером. Что бы избежать обработки "заикается", как упреждающее чтение выполняется, но за счет хорошую сумму относительно сложный многопоточный код.

+12
Ludi 18 мая 2018 г., 22:41:02

Показать вопросы с тегом