нет доступа к fifo файлу tmp fly wm 0 astra linux

UNIX / Linux: Какие правильные права на каталоги /tmp и /var/tmp

Каковы правильные права доступа, необходимы для каталогов /tmp и /var/tmp?

В каталогах /tmp и /var tmp требуются специальные права доступа.

Этот каталог имеет разрешения Sticky Bit.

Во многих приложениях будут отображаться ошибки или сбои, если они не смогут писать в /tmp с соответствующими разрешениями.

«T» в конце символизирует, что установлен стики бит.

Файл, созданный в каталоге /tmp, может быть удален только его владельцем или пользователем root.

Настройка прав

Измените разрешения для каталога, выполнив следующие команды:

Anything in here will be replaced on browsers that support the canvas element

Источник

Проблема с FIFO (именованые каналы)

Re: Проблема с FIFO (именованые каналы)

а сообразить, в каком порядке открывать FIFO, не судьба?

Re: Проблема с FIFO (именованые каналы)

Или fdopen(open(. O_NDELAY))

Re: Проблема с FIFO (именованые каналы)

В p1 перед открытием fifo1 на чтение также открывай его и на запись, но потом этот fd (для записи) не юзаешь.

Re: Проблема с FIFO (именованые каналы)

>а сообразить, в каком порядке открывать FIFO, не судьба?

p1 открывает сначала fifo1 на чтение а потом fifo2 на запись. p2 наоборот сначала fifo1 на запись а потом fifo2 на чтение. Разве такая последовательность не верна?

>В p1 перед открытием fifo1 на чтение также открывай его и на запись, но потом этот fd (для записи) не юзаешь. В p2 наоборот.

Так тоже не получается. При открытии ifname на запись p1 ждет открытия на чтение. Кто знает как открывать два fifo (один на read, другой на write) для взаимодействия двух процессов? Кто работал с фифо?

Re: Проблема с FIFO (именованые каналы)

> а сообразить, в каком порядке открывать FIFO, не судьба?

Порядок был правильный. Проблема оказалась в другом:

был типа процесс-сервер, который сначала создавал одни фифо для запросов клиентов. Потом клиент (p2) посылает запрос (connect) процессу-серверу, после чего p1 делает fork() и уже процесс потомок (p1) открывает два фифо (fifo1 и fifo2) для взаиможействия с p2.

нужна была задержка в клиенте после посылки запроса connect и перед открытием fifo.

>В p1 перед открытием fifo1 на чтение также открывай его и на запись, но потом этот fd (для записи) не юзаешь. В p2 наоборот.

и это тоже применил. Но в другом месте. После вылезла еще проблемка:

Сервер открвает фифо для запросов и ждет открытия на запись. Клиент тоже его открывает. Потом клиент заканчивает работать и закрывает его (и больше никто не открывал его). А серверу надо чтобы этот фифо был кем-нить открыт на запись. Поэтому пришлось открывать и на чтение и на запись (но не писать).

Источник

Основы программирования в Linux | Страница 146 | Онлайн-библиотека

1. Сначала попробуйте прочесть (пустой) файл FIFO:

2. Теперь попытайтесь записать в FIFO. Вам придется использовать другой терминал, поскольку первая команда в данный момент «зависла» в ожидании появления каких-нибудь данных в FIFO:

$ echo «Hello World» > /tmp/my_fifo

3. Можно выполнить обе команды одновременно, переведя первую в фоновый режим:

$ echo «Hello World» > /tmp/my_fifo

Как это работает

На третьем шаге процесс cat с самого начала заблокирован в фоновом режиме. Когда echo делает доступными некоторые данные, команда cat читает их и выводит в стандартный вывод. Обратите внимание на то, что она затем завершается, не дожидаясь дополнительных данных. Программа cat не блокируется, т.к. канал уже закрылся, когда завершилась вторая команда, поместившая данные в FIFO, поэтому вызовы read в программе cat вернут 0 байтов, обозначая этим конец файла.

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

Открытие FIFO с помощью open

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

Читайте также:  таблица штрих кодов городов

open(const char *path, O_RDONLY);

open(const char *path, O_RDONLY | O_NONBLOCK);

Теперь вызов open завершится успешно и вернет управление сразу, даже если канал FIFO не был открыт для записи каким-либо процессом.

open(const char *path, O_WRONLY);

В данном случае вызов open будет заблокирован до тех пор, пока процесс не откроет тот же канал FIFO для чтения.

open(const char *path, O_WRONLY | O_NONBLOCK);

Выполните упражнение 13.11.

Упражнение 13.11. Открытие файлов FIFO

1. Начните с заголовочных файлов, директивы #define и проверки правильности количества предоставленных аргументов командной строки:

#define FIFO_NAME «/tmp/my_fifo»

int main(int argc, char *argv[]) <

fprintf(stderr, «Usage: %s

O_RDONLY O_WRONLY O_NONBLOCK>\n», *argv);

2. Полагая, что программа передает тестовые данные, вы задаете параметр open_mode из следующих аргументов:

if (strncmp(*++argv, «O_RDONLY», 8) == 0) open_mode |= O_RDONLY;

if (strncmp(*argv, «O_WRONLY», 8) == 0) open_mode |= O_WRONLY;

if (strncmp(*argv, «O_NONBLOCK», 10) == 0) open_mode |= O_NONBLOCK;

3. Далее проверьте, существует ли канал FIFO, и при необходимости создайте его. Затем FIFO открывается, и пока программа засыпает на короткое время, выполняется результирующий вывод. В заключение FIFO закрывается.

res = mkfifo(FIFO_NAME, 0777);

fprintf(stderr, «Gould not create fifo %s\n», FIFO_NAME);

printf(«Process %d opening FIF0\n», getpid());

res = open(FIFO_NAME, open_mode);

printf(«Process %d result %d\n», getpid(), res);

printf(«Process %d finished\n», getpid());

Как это работает

Никогда не уничтожайте FIFO, т.к. у вас нет способа узнать, не использует ли FIFO другая программа.

O_RDONLY и O_WRONLY без O_NONBLOCK

Теперь у вас есть тестовая программа, и вы можете проверить комбинации пар. Обратите внимание на то, что первая программа, считыватель, помещена в фоновый режим.

$ ./fifo2 O_RDONLY &

Process 152 opening FIFO

$ ./fifo2 O_WRONLY

Process 153 opening FIFO

Process 152 result 3

Process 153 result 3

Process 152 finished

Process 153 finished

Когда процесс в ОС Linux заблокирован, он не потребляет ресурсы ЦП, поэтому этот метод синхронизации очень эффективен с точки зрения использования ЦП.

Нейл Мэтью: Ричард Стоунс: Основы программирования в Linux: 4-е издание 1
Об авторах 1
Благодарности 1
Предисловие 1
Введение 1
Для кого эта книга? 1
Чему посвящена книга? 2
Что вам потребуется для использования книги? 2
Исходный программный код 2
Замечание, касающееся программного кода примеров 3
Общедоступная лицензия проекта GNU 3
Стилевое оформление, принятое в книге 3
Ошибки 3
Сайт p2p.wrox.com 3
Глава 1: Приступая к работе 4
Введение в UNIX, Linux и проект GNU 4
Что такое ОС UNIX? 4
Что такое Linux? 5
Проект GNU и Фонд свободного ПО 5
Дистрибутивы Linux 5
Программирование в ОС Linux 5
Linux-программы 5
Текстовые редакторы 6
Компилятор языка С 6
Маршрутная карта системы разработки 6
Получение справки 9
Резюме 9
Глава 2: Программирование средствами командной оболочки 9
Почему программа в командной оболочке? 9
Немного теории 10
Что такое командная оболочка? 10
Каналы и перенаправление 10
Перенаправление вывода 10
Перенаправление ввода 11
Каналы 11
Командная оболочка как язык программирования 11
Интерактивные программы 11
Создание сценария 12
Превращение сценария в исполняемый файл 12
Синтаксис командной оболочки 12
Переменные 12
Условия 14
Управляющие структуры 15
Функции 18
Команды 18
Выполнение команд 24
Встроенные документы 25
Отладка сценариев 25
По направлению к графическому режиму — утилита dialog 26
Соединяем все вместе 27
Требования 27
Проектирование 27
Резюме 29
Глава 3: Работа с файлами 30
Структура файла в Linux 30
Каталоги 30
Файлы и устройства 30
Системные вызовы и драйверы устройств 31
Библиотечные функции 31
Низкоуровневый доступ к файлам 31
write 32
read 32
open 32
Исходные права доступа 32
Другие системные вызовы для управления файлами 34
Стандартная библиотека ввода/вывода 34
fopen 35
fread 35
fwrite 35
fclose 35
fflush 35
fseek 35
fgetc, getc и getchar 35
fputc, putc и putchar 36
fgets и gets 36
Форматированные ввод и вывод 36
printf, fprintf и sprintf 36
scanf, fscanf и sscanf 37
Другие потоковые функции 37
Ошибки потока 38
Потоки и дескрипторы файлов 38
Ведение файлов и каталогов 38
chmod 38
chown 38
unlink, link и symlink 38
mkdir и rmdir 38
chdir и getcwd 38
Просмотр каталогов 39
opendir 39
readdir 39
telldir 39
seekdir 39
closedir 39
Ошибки 40
strerror 40
perror 40
Файловая система procfs 40
Более сложные приемы: fcntl и mmap 41
fcntl 41
mmap 41
Резюме 42
Глава 4: Окружение Linux 42
Аргументы программы 42
getopt 43
getopt_long 44
Переменные окружения 44
Применение переменных окружения 45
Переменная environ 45
Время и дата 45
Временные файлы 47
Информация о пользователе 48
Информация о компьютере 49
Ведение системных журналов 49
Ресурсы и ограничения 50
Резюме 52
Глава 5: Терминалы 52
Чтение с терминала и запись на терминал 52
Сравнение канонического и неканонического режимов 53
Обработка перенаправленного вывода 53
Диалог с терминалом 53
Драйвер терминала A и общий терминальный интерфейс 54
Обзор 54
Аппаратная модель 54
Структура типа termios 54
Режимы ввода 55
Режимы вывода 55
Режимы управления 55
Локальные режимы 55
Специальные управляющие символы 55
Скорость терминала 57
Дополнительные функции 57
Вывод терминала 58
Тип терминала 58
Установите тип вашего терминала 58
Применение характеристик terminfo 59
Обнаружение нажатий клавиш 60
Виртуальные консоли 61
Псевдотерминалы 61
Резюме 61
Глава 6: Управление текстовыми экранами с помощью библиотеки curses 61
Компиляция с библиотекой curses 61
Терминология библиотеки curses и общие представления 62
Экран 63
Вывод на экран 63
Считывание с экрана 63
Очистка экрана 63
Перемещение курсора 63
Атрибуты символов 63
Клавиатура 64
Режимы клавиатуры 64
Клавиатурный ввод 64
Окна 65
Структура WINDOW 65
Универсальные функции 65
Перемещение и обновление окна 65
Оптимизация обновлений экрана 66
Вложенные окна 66
Дополнительная клавиатура 67
Применение цвета 67
Переопределение цветов 68
Панели 68
Приложение, управляющее коллекцией компакт-дисков 68
Начало нового приложения для работы с коллекцией компакт-дисков 69
Взгляд на функцию main 69
Формирование меню 69
Управление базой данных 69
Запросы к базе данных компакт-дисков 70
Резюме 71
Глава 7: Управление данными 71
Управляемая память 71
Простое выделение памяти 71
Выделение огромных объемов памяти 72
Неправильное обращение к памяти 73
Указатель null 73
Освобождение памяти 73
Другие функции распределения памяти 73
Блокировка файлов 74
Создание файлов с блокировкой 74
Блокировка участков файла 75
Применение вызовов read и write при наличии блокировки 76
Конкурирующие блокировки 77
Другие команды блокировок 78
Взаимоблокировки 78
Базы данных 78
База данных dbm 78
Подпрограммы dbm 79
Функции доступа dbm 79
Дополнительные функции dbm 80
Приложение для работы с коллекцией компакт-дисков 81
Обновление проектного решения 81
Приложение управления базой данных компакт-дисков, использующее dbm 81
Резюме 85
Глава 8: MySQL 85
Установка 85
Пакеты MySQL 85
Настройка после установки 85
Устранение неисправностей после установки 87
Администрирование MySQL 87
Команды 87
Создание пользователей и наделение их правами доступа 89
Пароли 90
Создание базы данных 90
Типы данных 90
Создание таблицы 91
Графические средства 91
Доступ к данным MySQL из программ на С 92
Подпрограммы подключения 92
Обработка ошибок 93
Выполнение SQL-операторов 93
Разные функции 97
Приложение для работы с базой данных компакт-дисков 97
Создание таблиц 98
Вставка данных 98
Доступ к данным приложения из программы на С 99
Резюме 101
Глава 9: Средства разработки 101
Проблемы применения многочисленных исходных файлов 101
Команда make и make-файлы 101
Синтаксис make-файлов 101
Опции и параметры make 101
Комментарии в make-файле 102
Макросы в make-файле 102
Множественные задания 103
Встроенные правила 104
Суффиксы и шаблоны правил 104
Управление библиотеками с помощью make 104
Более сложная тема: make-файлы и подкаталоги 105
Версия GNU команд make и gcc 105
Управление исходным кодом 106
RCS 106
SCCS 107
Сравнение RCS и SCCS 107
CVS 107
Subversion 109
Написание интерактивного справочного руководства 109
Распространение программного обеспечения 110
Программа patch 110
Другие утилиты распространения 111
RPM-пакеты 111
Работа с файлами RPM-пакетов 111
Установка RPM-пакетов 112
Формирование RPM-пакетов 112
Пакеты других форматов 114
Среды разработки 114
KDevelop 114
Другие среды разработки 114
Резюме 114
Глава 10: Отладка 115
Типы ошибок 115
Общие методы отладки 115
Программа с ошибками 115
Анализ кода 116
Оснащение средствами контроля 116
Контролируемое выполнение 117
Отладка с помощью gdb 117
Запуск gdb 117
Выполнение программы 117
Трассировка стека 118
Просмотр переменных 118
Вывод листинга программы 118
Установка точек останова 118
Вставка исправлений с помощью отладчика 119
Дополнительные сведения о gdb 119
Дополнительные средства отладки 120
Lint удаление ошибок из ваших программ 120
Средства, отслеживающие вызовы функций 121
Выполнение профилирования с помощью prof/gprof 121
Проверки соблюдения условий 121
Устранение ошибок использования памяти 122
ElectricFence 122
valgrind 122
Резюме 123
Глава 11: Процессы и сигналы 123
Что такое процесс? 123
Структура процесса 124
Таблица процессов 124
Просмотр процессов 124
Системные процессы 125
Планирование процессов 125
Запуск новых процессов 126
Замена образа процесса 126
Дублирование образа процесса 127
Ожидание процесса 127
Процессы-зомби 128
Перенаправление ввода и вывода 128
Потоки 129
Сигналы 129
Отправка сигналов 130
Множества сигналов 131
Резюме 133
Глава 12: Потоки POSIX 133
Что такое поток? 133
Достоинства и недостатки потоков 134
Первая программа с применением потоков 134
Одновременное выполнение 135
Синхронизация 136
Синхронизация с помощью семафоров 136
Синхронизация с помощью мьютексов 137
Атрибуты потока 138
Атрибуты планирования потока 139
Отмена потока 139
Потоки в изобилии 140
Резюме 141
Глава 13: Связь между процессами: каналы 141
Что такое канал? 141
Каналы процессов 141
popen 141
pclose 142
Отправка вывода в popen 142
Передача данных большого объема 142
Как реализован вызов popen 142
Вызов pipe 143
Родительский и дочерний процессы 144
Чтение закрытых каналов 144
Каналы, применяемые как стандартные ввод и вывод 144
Именованные каналы: FIFO 145
Доступ к FIFO 145
Более сложная тема: применение каналов FIFO в клиент-серверных приложениях 147
Приложение для работы с базой данных компакт-дисков 148
Цели 149
Реализация 149
Функции интерфейса клиента 150
Интерфейс сервера server.c 151
Канал 151
Резюме, касающееся приложения 152
Резюме 153
Глава 14: Семафоры, совместно используемая память и очереди сообщений 153
Семафоры 153
Описание семафора 153
Теоретический пример 154
Реализация семафоров в Linux 154
Применение семафоров 155
Совместно используемая память 156
shmget 156
shmat 156
shmdt 156
shmctl 156
Очереди сообщений 157
msgget 158
msgsnd 158
msgrcv 158
msgctl 158
Приложение для работы с базой данных компакт-дисков 159
Пересмотр функций сервера 159
Пересмотр функций клиента 160
Команды состояния IPC 160
Отображение состояния семафора 160
Отображение состояния совместно используемой памяти 160
Отображение состояния очереди сообщений 160
Резюме 160
Глава 15: Сокеты 160
Что такое сокет? 161
Соединения на базе сокетов 161
Атрибуты сокета 162
Создание сокета 163
Адреса сокетов 163
Именование сокета 163
Создание очереди сокетов 164
Прием запросов на соединение 164
Запросы соединений 164
Закрытие сокета 164
Обмен данными с помощью сокетов 164
Порядок байтов на компьютере и в сети 165
Сетевая информация 166
Интернет-демон (xinetd/inetd) 167
Параметры сокета 167
Множественные клиенты 168
select 168
Множественные клиенты 169
Дейтаграммы 170
Резюме 171
Глава 16: Программирование в GNOME с помощью GTK+ 171
Введение в систему X 171
X-сервер 171
X-клиент 172
X-протокол 172
Xlib 172
Комплекты инструментов 172
Оконные менеджеры 172
Другие способы создания GUI — платформно-независимые оконные API 172
Введение в GTK+ 172
Система типов GLib 173
Система объектов GTK+ 173
Знакомство с GNOME 173
Установка библиотек разработки GNOME/GTK+ 173
События, сигналы и обратные вызовы 174
Виджеты упаковочных контейнеров 175
Виджеты GTK+ 176
GtkWindow 176
GtkEntry 176
GtkSpinButton 177
GtkButton 177
GtkTreeView 178
Виджеты GNOME 179
Меню GNOME 179
Диалоговые окна 180
GtkDialog 180
Модальное диалоговое окно 181
Немодальные диалоговые окна 181
GtkMessageDialog 181
Приложение для работы с базой данных компакт-дисков 182
Резюме 184
Глава 17: Программирование в KDE с помощью Qt 184
Введение в KDE и Qt 184
Установка Qt 184
Сигналы и слоты 185
Виджеты Qt 187
QLineEdit 187
Кнопки Qt 188
QComboBox 189
QListView 190
Диалоговые окна 190
QDialog 190
QMessageBox 191
QInputDialog 191
Применение qmake для упрощения написания make-файлов 192
Создание меню и панелей инструментов с помощью KDE 192
Приложение для работы с базой данных компакт-дисков с использованием KDE/Qt 193
MainWindow 193
AddCdDialog 193
LogonDialog 193
main.cpp 194
Резюме 194
Глава 18: Стандарты Linux 194
Язык программирования С 194
Краткий урок истории 195
Коллекция компиляторов GNU 195
Опции gcc 195
Интерфейсы и Linux Standards Base 196
Стандартные библиотеки LSB 196
Применение стандарта LSB к библиотекам 197
Инициализация системы LSB 197
Стандарт устройства файловой системы 197
Что еще почитать о стандартах? 199
Резюме 199
Читайте также:  как включить русский язык в майнкрафте на xbox 360

Источник

Компьютерный онлайн портал