Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Функция mount  (Прочитано 983 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Функция mount
« : 10 Апрель 2012, 23:02:38 »
Пробую примонтировать флешку следующей функцией:

int res = mount("/dev/sdb1", "/media/myusb", "vfat", MS_RDONLY, "");

sdb1 - моя флешка, myusb - уже создан  заранее, vfat - fat32
возвращает -1

cout << strerror(res) << endl; - пишет: "Unknown error 4294967295"

пробовала и от рута запускать и без, с разными флагами, что я не так делаю?

просто команда mount в терминале работает нормально

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Функция mount
« Ответ #1 : 11 Апрель 2012, 00:08:12 »
Пробую примонтировать флешку следующей функцией:

int res = mount("/dev/sdb1", "/media/myusb", "vfat", MS_RDONLY, "");

sdb1 - моя флешка, myusb - уже создан  заранее, vfat - fat32
возвращает -1

cout << strerror(res) << endl; - пишет: "Unknown error 4294967295"

пробовала и от рута запускать и без, с разными флагами, что я не так делаю?

просто команда mount в терминале работает нормально

1. ну, без root это вообще не сработает...

2.
$ man 2 mount
ОБЗОР
       #include <sys/mount.h>

       int mount(const char *source, const char *target,
                 const char *filesystemtype, unsigned long mountflags,
                 const void *data);
...
- мне не нравится ваш последний параметр: там, думаю, должно быть не "", а NULL.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Функция mount
« Ответ #2 : 11 Апрель 2012, 07:37:43 »
cout << strerror(res) << endl; - пишет: "Unknown error 4294967295"
не, ну я бы тоже так написал =)
надо cout << strerror(errno) << endl;так будет гораздо информативнее =)
и не забыть #include <errno.h>

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Функция mount
« Ответ #3 : 11 Апрель 2012, 12:16:30 »
cout << strerror(res) << endl; - пишет: "Unknown error 4294967295"
не, ну я бы тоже так написал =)
надо cout << strerror(errno) << endl;так будет гораздо информативнее =)
и не забыть #include <errno.h>

Или ещё проще для таких случаев (ошибки!):
if( !res ) printf( "ошибка: %m" );
;)

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Функция mount
« Ответ #4 : 11 Апрель 2012, 20:51:37 »
аа...неправильно пользуюсь выводом ошибок :)

теперь при запуске пишет либо так: "Device or resource busy", хотя флешка предварительно отмонтирована, либо "No such file or directory", хотя sdb1 есть и media/myusb тоже


Пользователь решил продолжить мысль 11 Апрель 2012, 20:52:39:

- мне не нравится ваш последний параметр: там, думаю, должно быть не "", а NULL.


по-разному пробовала. И с "", и с NULL, и с параметрами, которые можно прописывать в консоли, например, кодировка.


запустила только что на ноуте - сработало, в виртуалке почему-то так и не хочет x_X
« Последнее редактирование: 11 Апрель 2012, 20:55:24 от kassyopeya »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Функция mount
« Ответ #5 : 11 Апрель 2012, 21:09:03 »
запустила только что на ноуте - сработало, в виртуалке почему-то так и не хочет x_X

А-а-а-а-а... ;)
Так с этого надо было начинать.

Какой гипервизор виртуальных машин?
Если VirtualBox, то там для работы с USB нужно устанавливать расширение, причём:
- расширение (файл) по версии должен соответствовать версии самого VirtualBox;
- после любого обновления VirtualBox (из .rpm) расширение установленное сносится, и его нужно устанавливать по-новой.

P.S. это всё легко проверить: монтируйте не USB, с которым могут быть проблемы, а что-то другое ... ну хотя бы файл:
# mount -o loop,iocharset=utf8 -t iso9660 ./Fedora-16-i686-Live-Desktop.iso /mnt/virtsd/
- и поймёте с чем у вас проблемы: с mount, или с USB.
« Последнее редактирование: 11 Апрель 2012, 21:27:13 от Olej »

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Функция mount
« Ответ #6 : 11 Апрель 2012, 21:39:56 »

Какой гипервизор виртуальных машин?

# mount -o loop,iocharset=utf8 -t iso9660 ./Fedora-16-i686-Live-Desktop.iso /mnt/virtsd/
- и поймёте с чем у вас проблемы: с mount, или с USB.


у меня VMware.
Дело в том, что простое монтирование флешки, т.е. из терминала команда mount, работает :)
А из собственной программы вот какие-то непонятные вещи.

 

Страница сгенерирована за 0.086 секунд. Запросов: 25.