Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Структура программы на языке С. Параметры главной функции (пример).




Функция является первой функцией, определенной пользователем

(т. е. явно описанной в исходном тексте программы), которой будет передано управление после создания соответствующего окружения запускаемой на выполнение программы. Традиционно функция 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,…)


Поделиться:

Дата добавления: 2015-01-14; просмотров: 126; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты