Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 3

Функция mount() на языке C (Linux)

25.10.2011, 16:07. Показов 5210. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, всем)!
Помогите разобраться с функцией mount(). Вот мой код.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <sys/mount.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
 
int main(int argc, char** argv){
  int mn;
  
  mn = mount("/dev/sda5", "/mnt", "", 0xC0ED | MS_MGC_VAL | MS_BIND | MS_REMOUNT ,NULL );
 
  if(mn == 0)
    printf("GOOD\n");
  else{
    printf("%s\n", strerror(errno));
    return 1;
  } 
  return 0;
}
Но он выдает ошибку Invalid argument и не монтирует раздел жесткого диска. В чем может быть проблема???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2011, 16:07
Ответы с готовыми решениями:

Функция mount
Здравствуйте всем. Вопрос такой возник у меня, пытаюсь подмонтировать флэшку функцией mount...

В чем разница между "Порядок выполнения программ на языке C" и "Структура программы на языке C"
в конспектах у себя не нашел, хоть и записывал все, что объяснял преподаватель. вот, собственно,...

GeoTiff - примеры ее использования на языке c , желательно на русском языке
Добрый вечер. Дана курсовая с использованием библиотеки GeoTiff. Подскажите где можно прочитать про...

6
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
25.10.2011, 18:27
Цитата Сообщение от olegator90 Посмотреть сообщение
mn = mount("/dev/sda5", "/mnt", "", 0xC0ED | MS_MGC_VAL | MS_BIND | MS_REMOUNT ,NULL )
Какое по Вашему действие система должна предпринять встретив MS_BIND | MS_REMOUNT?

Не по теме:

AFAIR MS_MGC_VAL это и есть 0xCOED и давно не актуально.

0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 3
26.10.2011, 14:14  [ТС]
Из man'a:
MS_BIND (начиная с Linux 2.4) Выполнить привязку подключения, при этом файл или каталог становятся видимыми в других точках внутри файловой системы. Привязки подключения могут нарушать ограничения файловой системы и лимиты chroot(2).
Аргументы filesystemtype, mountflags, и data игнорируются.
MS_REMOUNT
Переподключить уже существующее подключение. При этом можно изменить mountflags и data уже существующего подключения без фактического отключения-подключения файловой системы. source и target должны соответствовать значениям, указанным для mount() в первом вызове (при начальном подключении); параметр filesystemtype игнорируется.

По идее они не должны мешать друг другу. Когда убираешь один из них то появляется другая ошибка, что не найден девайс.
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
0xC0ED | MS_MGC_VAL с этим я запарился, не заметил
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
26.10.2011, 14:49
Цитата Сообщение от olegator90 Посмотреть сообщение
Из man'a:
Всегда читайте оригинал.
Но я не про то спрашивал.
На Ваш mount("foo", "bar", NULL, MS_BIND | MS_REMOUNT) должна система сделать бинд или все-таки перемонтировать?
Цитата Сообщение от olegator90 Посмотреть сообщение
По идее они не должны мешать друг другу.
Увы, мешают, точнее это конечно не причина ошибки, но одновременно эти 2 флага смысла не имеют. АФАИР выиграет MS_REMOUNT, но можно заглянуть в ядро для уточнения.
Цитата Сообщение от olegator90 Посмотреть сообщение
Когда убираешь один из них то появляется другая ошибка, что не найден девайс.
Что то не соображу какая это. Можно код ошибки?
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 3
26.10.2011, 19:44  [ТС]
C
1
mn = mount("/dev/sda5", "/mnt", "", MS_BIND ,NULL );
Когда так оставляю после запуска программы выводится вот такое сообщение: Not a directory
Когда же такой код:
C
1
mn = mount("/dev/sda5", "/mnt", "",MS_MGC_VAL | MS_REMOUNT ,NULL );
выводится вот такое сообщение: Invalid argument
А при таком коде:
C
1
mn = mount("/dev/sda5", "/mnt", "",MS_MGC_VAL ,NULL );
Ошибка: No such device
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
mount("foo", "bar", NULL, MS_BIND | MS_REMOUNT)
Она должна тупо примонтировать диск, что бы с ним можно было дальше работать.

Добавлено через 22 минуты
Скажите можно ли заменить команду mount("a", "b", NULL, "c", NULL) вот этой строчкой
C
1
execl("/bin/mount", "mount", "/dev/sda5/", "/mnt", NULL);
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
26.10.2011, 21:26
Неужели так сложно прочесть одну страницу ман?
Отвечать не хотелось...
Цитата Сообщение от olegator90 Посмотреть сообщение
Когда так оставляю после запуска программы выводится вот такое сообщение: Not a directory
Все верно, вряд ли "/dev/sda5" директорий.
Цитата Сообщение от olegator90 Посмотреть сообщение
выводится вот такое сообщение: Invalid argument
А на момент запуска /dev/sda5 был уже смонтирован???
Цитата Сообщение от olegator90 Посмотреть сообщение
Ошибка: No such device
А тип fs за Вас кто укажет?

Цитата Сообщение от olegator90 Посмотреть сообщение
Она должна тупо примонтировать диск, что бы с ним можно было дальше работать.
Увы, аргументы на столько кривы, что она не может ничего.

Цитата Сообщение от olegator90 Посмотреть сообщение
Скажите можно ли заменить команду mount("a", "b", NULL, "c", NULL) вот этой строчкой
смотря, что скрывается под a b и c
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
09.11.2011, 02:03
Цитата Сообщение от olegator90 Посмотреть сообщение
Скажите можно ли заменить команду mount("a", "b", NULL, "c", NULL) вот этой строчкой
да можно в принципе и
C
1
2
if ( system("mount /dev/sda5 /mnt -o bla bla bla") )
    fprintf(stderr, "Forbidden, nicht permission!\n");
но не комильфо как-то...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2011, 02:03
Помогаю со студенческими работами здесь

Язык Си и язык программирования Ардуино это один и тот же язык программирования?
или это два совсем разных языка программирования?

Компиляция Builder'овского проекта под Linux, (и освоение Linux после Builder'a)
Есть не очень маленький проект, написанный в винде на Builder'e. 1) Сложно ли его будет...

Библиотека QT Linux X11 и библиотека QT Embedded Linux одно ито же???
Вот стал скачивать эти библиотеки и вижу - у них размер одинаковый......да и ссылка одна и та...

Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
В силу объективных причин пришлось перейти на Linux, но столкнулся с проблемой установки окружения...

Почему Linux понимает русский язык, и как разучить его это делать?
Здравствуйте! Зная, что в Linux принята неравномерная кодировка UTF-8, я удивлялся, как считай...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru