Файлы, скопированные в карту флэш-памяти только на размонтировании

xdotool выставляет местоположение указателя (xdotool getmouselocation), и последние версии (начиная с 2.20110530.1) указывают, какое окно в том местоположении также. Ни один из xwininfo, wmctrl или более старые версии xdotool кажись, иметь способ соответствовать окну экранным положением, где это видимо.

Лежание в основе X вызовов библиотеки XQueryPointer (соответствующий a QueryPointer сообщение). Вот простой сценарий обертки Python вокруг этого вызова (использование ctypes). Проверка ошибок в основном опущена. Предполагает, что Вы используете экран 0 (если Вы не знали, что дисплеи могли иметь больше чем один экран, проигнорировать это).

#! /usr/bin/env python
import sys
from ctypes import *
Xlib = CDLL("libX11.so.6")
display = Xlib.XOpenDisplay(None)
if display == 0: sys.exit(2)
w = Xlib.XRootWindow(display, c_int(0))
(root_id, child_id) = (c_uint32(), c_uint32())
(root_x, root_y, win_x, win_y) = (c_int(), c_int(), c_int(), c_int())
mask = c_uint()
ret = Xlib.XQueryPointer(display, c_uint32(w), byref(root_id), byref(child_id),
                         byref(root_x), byref(root_y),
                         byref(win_x), byref(win_y), byref(mask))
if ret == 0: sys.exit(1)
print child_id.value

Пример использования:

xwininfo -tree -id $(XQueryPointer)

5
29.09.2011, 00:55
2 ответа

Можно сделать это, приняв меры, чтобы устройство было смонтировано с sync опция. Но это не такая хорошая идея, потому что это может носить дешевые карты флэш-памяти с интерфейсом USB очень быстро (это было обсуждено в списке рассылки ядра Linux).

Последние версии Linux имеют flush опция для файловых систем FAT, которая является где-нибудь между sync и async: это заставляет все отложенные записи быть сброшенными, как только диск становится неактивным. flush опция идет по умолчанию в Ubuntu 10.04, но не в хрипящем Debian.

См., что также я должен размонтировать Карту памяти прежде, чем отключить его?

4
27.01.2020, 20:38

mount команда имеет две связанных опции:

синхронизация Весь ввод-вывод к файловой системе должна быть сделана синхронно.

dirsync Все обновления каталога в файловой системе должен быть сделан синхронно.

Можно указать их в mount команда -o опция:

mount -o sync /mnt/flashdrive

Или в Вашем /etc/fstabчетвертый столбец:

/dev/sdb1 /mnt/flashdrive auto rw,user,noauto,sync 0 0

3
27.01.2020, 20:38
  • 1
    o предпочтителен для синхронизации-o, поскольку синхронизация будет напрасно тратить время и помещать больше износа на диск, выполняющий каждую тривиальную запись, которая может износить FAT раньше. Сброс просто удостоверяется, что записи все делаются, когда файл закрывается. –  psusi 28.09.2011, 21:04
  • 2
    Вы правы. Поскольку я помню, что никогда не встречал флеш-накопитель с другой файловой системой, чем FAT. –  manatwork 28.09.2011, 21:32

Теги

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