КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Структура программы на языке С. Параметры главной функции (пример).Функция является первой функцией, определенной пользователем (т. е. явно описанной в исходном тексте программы), которой будет передано управление после создания соответствующего окружения запускаемой на выполнение программы. Традиционно функция Main() определяется следующим образом: Main(int argc, char*argv[],char*enp[]); Первый аргумент (argc) определяет число параметров, переданных программе, включая ее имя. Указатели на каждый из параметров передаются в массиве argv [ ], таким образом, через argv[0] адресуется строка, содержащая имя программы,argv[1] указывает на первый параметр и т. д. до argv[argc-1]. Массив envp [] содержит указатели на переменные окружения, передаваемые программе. Стандарт ANSI С определяет только два первых аргумента функции Main()— argc и argv. Стандарт POSIX.1 определяет также аргумент envp, хотя рекомендует передачу окружения программы производить через гло- бальную переменную environ. Объявление: extern char* environ. Environ указывает на массив ссылок, при этом каждая ссылка на конкретную строку окружения.NULL в UNIX- список в никуда. Пример: выводит значения всех аргументов, переданных функции Main():числопереданных параметров, сами параметры и значения первых 10 переменных окружения: include <stddef.h> include <stdIO.h> extern char**environ; main(int argc, char*argv[]); { int i; Printf(“число передан аргументов %s равно %d\n”,argv[0],argc-1); for (i=1,i<argc,i++) {printf(“argv[%d] = %s/n”,i,argc[i];} for (i=0,i<10,i++) {if (environ[i]!=NULL) printf(“environ[%d] =%s\n,i,environ[i]);}} >./a.out first second th Число переданных пар-ров программе: a.out=3 argv[1]= first argv[2]=second argv[3]=th environ[0]=logNAME=student……
23. Файловая система ОС UNIX: монтирование, индексные дескрипторы, жесткие и символические ссылки, файлы устройств. В UNIX файл. система представл собой единое дерево каталогов, в имя файла не входит имя устр-ва. Прежде чем состоится работа с файлами, соответс файловая система должна быть встроена в существующ иерархическое дерево. Только после этого ядро сможет выполнять файловые операции, эта операция встраивания – монтирование файловой системы. Монтирование файловой системы производится системным вызовом mount(). В случае если в системе есть неск дисков, то 1 из них корневой, а остальные – мантируются в тот или иной каталог – точка монтирования. При этом при указании полных путей к файлам на этом диске, необходимо к полному имени файла в рамках диска добавить полный путь точки монтирования: дискета на ней word папка в ней файл prog.c сама дискета смонтирована в каталог /mnt/floppy. Тогда полный путь к файлу: /mnt/floppy/work/prog.c Индексные дискрипторы.В UNIX каталоги хранят имя файла и некот номер, позволяющий определить соот-щий флаг. Все остальные данные о файле связаны с этим номером. Хранимая на внешн носителе структура данных, сод всю информац о файле, кроме имени назыв индексным дескриптором. Жесткая ссылка – когда 2 или более имен файлов расположены в разных каталогах, но в рамках 1 диска ссылаются на 1 и тот же индексный дескриптор. Нумерация индекс дескрипторов в рамках своего диска своя. Создание жестких ссылок на каталоги запрещается. Доп имя файла м. получить с пом систем вызова Link: int link(const char*oldpath, const char*newpath); в индексном дескрипторе есть счетчик ссылок на данный дескриптор. Ф-я для удаления файла unlink() – удаляет указан жесткую ссылку, имя удал-ся из каталога, а счетчик ссылок обнуляется. В burnshell команда ln создает жесткую ссылку. Символические ссылки. Разница между каталогом и файлом – это значение признака типа в индексном дескрипторе. ОС UNIX поддерж и другие спец типы файлов: файлы байт ориентирован и блок ориентир-х устр-в, имена сокетов, именов-е каналы FIFO и символ ссылки. Симв ссылки – файл спец типа содержащие имя другого файла. В отличии от жесткой символ ссылки легко отлечима от имени файла. int sinLink(const char*oldpath,const char*newpath). Удаление происходит unlink(). Ком-да создания символ ссылки ln-s. Файлы уср-в: Любое устр-во в Unix – это файл спец типа. Сделать образ диска можно с пом. команды:>cat /dev/cdrom>image.iso Форматир-е диска:1)открыть спец файл соотв диску.2)спозиционировать на нужный сектор lseek.3)выдать обычный write. Кроме общих операций с файлами к устр-вам примен свои доп операции, все операции этой категории, выполн с пом сист вызова: Int IOctl(int fd,int request,…)
|