Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-02-28 08:24:23

  diabolic - Użytkownik

diabolic
Użytkownik
Skąd: okolice Leżajska
Zarejestrowany: 2007-10-08

Montowanie pendrvie

Piszę aplikację w Qt, której jednym z zadań będzie kopiowanie jej raportów na pendrive, z tym, że będzie ona obsługiwana przez osoby, które mogą bez odmontowania usuwać pendriva z portu usb, a jak wiadomo jest buffering, i przy takiej czynności dane się nie zapisują. Pytanie czy można tak montować pendriva, aby od razu zapisywało dane bez bufferowania ( partycje fat oraz ntfs)? Druga sprawa jak najlepiej zaimplementować montowanie, aby aplikacja "wiedziała", gdzie zapisywać dane? Czy zaprzęgnąć do tego udev i nakazać mu montowanie pendrive w jednej lokalizacji, czy może obsłużyć juz z aplikacji montowanie i odmontowanie za pomocą zwykłego polecenia mount? Dodam, że będzie to na debianie, i jednocześnie do sprzętu będzie można podpiąć tylko jedno urządzenie usb. Pozdrawiam


I am the one who chose my path

Offline

 

#2  2012-02-28 10:34:31

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: Montowanie pendrvie

Zapisywanie bez buforów opcja sync polecenia mount.

Co co rozwiązania montowania, najprościej użyć funkcji system i polecenia mount/umount z odpowiednimi parametrami: po pierwsze zamontujesz gdzie chcesz, rozpozna sam czy fat/czy ntfs (oczywiście muszą być zainstalowane potrzebne pakiety).

Zresztą montowanie z opcją sync jest zupełnie nie potrzebne, możesz montować "normalnie", potem wywołać sync, następnie odmontować nośnik. Zawsze możesz wprowadzić funkcję weryfikacji danych, przed kopiowaniem raportu gererujesz jego sumę kontrolną (CRC, MD5, itp), potem montujesz, kopiujesz, sync, odmontowujesz, potem znowu montujesz, porównujesz sumę kontrolną, odmontowujesz. A użytkownikowi wyświetlasz komunikaty: włóż pendrive, zapisywanie danych - nie wyciągaj nośnika, trwa weryfikacja danych, możesz wyciągnąć nośnik.

Oczywiście Ty jesteś odpowiedzialny za to, aby napisać obsługę wszystkich błędów jakie mogą się pojawić, z typu niezapisywany nośnik, wyjęcie nośnika w czasie zapisu...

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00006 SET NAMES latin2
0.00099 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.141.201.95' WHERE u.id=1
0.00052 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.141.201.95', 1732749831)
0.00051 SELECT * FROM punbb_online WHERE logged<1732749531
0.00044 SELECT topic_id FROM punbb_posts WHERE id=196052
0.00088 SELECT id FROM punbb_posts WHERE topic_id=20788 ORDER BY posted
0.00055 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20788 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00064 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20788 ORDER BY p.id LIMIT 0,25
0.00074 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20788
Total query time: 0.00551 s