Загрузил temachkan

План. Ответы на вопросы.

Реклама
1. Переменные окружения. Что это? Какой тип? Для чего нужны?
2. Return. Для чего нужен? Что возвращает, когда он написан в main?
Зачем int перед main?
3. Exit(взять из дока Ильнура)
4. EOF. Что символизирует конец файла?
5. FILE. Что это?
6. Fgetc
7. Fputc
8. ==NULL
9. Fputs
10. Size_t
11. BUFSIZ
12. Free
13. Malloc
14. Realloc
15. Calloc
16. Popen. Почему я использовал его? Как он работает?
17. Pclose
18. Организация памяти в Си. Где куча, стек,
ОТВЕТЫ
1.Переменные окружения.
Это именованные переменные, которые содержат текстовую информацию,
которую могут запускаемую программы. Они могут содержать информацию
об общих настройках системы, предпочтения пользователя. Например
значением может быть место размещения исполняемых файлов или имя
предпочитаемого текстового редактора по умолчанию. Переменные
окружения дают возможность просто и надежно передавать настройки сразу
в несколько приложений. Так же их можно создавать самому
Тип данные текст(?)
Экстра: https://ru.hexlet.io/blog/posts/kak-chitat-i-opredelyat-peremennyeokruzheniya-i-obolochki-na-linux
2. Int нужен чтобы указать тип возвращаемого значения. Возвращение
происходит при помощи return.
Оператор return имеет два значения. Во-первых, немедленный выход из
функции. То есть он осуществляет выход в вызывавший функцию код. Вовторых, может использоваться для возврата значения.
Когда используется оператор return в main(), программа возвращает код
завершения вызывавшему процессу (операционной системе). Возвращаемое
значение должно быть целого типа. Большинство операционных систем,
трактуют 0 как нормальное завершение программы. Остальные значения
воспринимаются как ошибки.
Если не определено возвращаемое значение, то в операционную систему
будет передано неизвестное значение. Поэтому гораздо полезнее
использовать оператор return.
3. Exit.
Завершает программу с переданным ей кодом в качестве аргумента.0 –
успешное завершение работы программы. Любой другой код соответствует
ошибке. Хранится в переменной bash $?. Чтобы вывести его, можно просто
написать echo $?. Если передан отрицательный код, то выведет значение 255код. Это потому что exit принимает int а хранит unsigned char.
4. EOF
Сигнализирует о конце файла. Если конец файла, то возвращает 1, в
противном случае 0. Если ошибка то вовзрат -1. Обычно EOF это -1.
5. FILE ?
6.
fgetc
Считывает один байт из указанного потока данных. В случае успешного
чтения байта возвращается код считанного байта.
7.
fputc
Эта функция записывает символ в указанный поток в ту позицию, которая
соответствует значению указателя положения в файле и инкрементирует
указатель. Возвращает значение записанного символа. В случае ошибки
возвращает eof.
8. NULL
9.Fputs
10.size_t
Базовый беззнаковый целочисленный тип. Является типом результата,
возвращаемого оператором sizeof. Размер типа выбирается таким образом,
чтобы в него можно было записать максимальный размер теоретически
возможного массива любого типа. На 32-битной системе size_t будет
занимать 32-бита, на 64-битной - 64-бита. Другими словами в тип size_t
может быть безопасно помещен указатель (исключение составляют указатели
на функции классов, но это особый случай). Тип size_t обычно применяется
для счетчиков циклов, индексации массивов, хранения размеров, адресной
арифметики. Хотя в size_t можно помещать указатель, для этих целей лучше
подходит другой беззнаковый целочисленный тип uintptr_t, само название
которого отражает эту возможность. В ряде случаев использование типа
size_t безопаснее и эффективнее, чем использование более привычного
программисту типа unsigned.
11. BUFSIZ
это обязательный буфер, выделяемый пользователем для подпрограммы.
Размер буфера должен соответствовать значению, определенному в
константе BUFSIZ. Обычно это 8192 байт. Использование буфера меньшего
размера может привести к критическим ошибкам в работе вашего
программного обеспечения.
12. FREE
Освобождает область памяти, на которую указывает указатель. Она ничего не
делает, если указатель равен NULL. В указателе должен быть указатель на
область памяти, которая выделена одной из функций выделения памяти.
13. MALLOC
Возвращает указатель на место в памяти для объекта размера size или, если
памяти запрашиваемого объема нет, NULL. Выделенная область памяти не
инициализируется.
14. REALLOC
Перевыделяет. Заменяет на size размер объект на который указывает р. Для
части, размер которой равен наименьшему из старого и нового размеров,
содержимое не изменяется. Если новый размер больше старого, то доп
пространство не инициализируется. Realloc возвращает указатель на новое
место памяти или, если требование не могут быть удовлетворены, NULL(*p
не изменяется)
15. CALLOC
Возвращает указатель на место памяти отведенное для массива
N obj объектов, каждый из которых равен размеру size, если памяти
запрашиваемого объема нет, то NULL. Выделенная память заполняется
нулями.
https://learnc.info/c/program_structure.html
popen –
•
вызов pipe(); Создает канал
•
вызов fork() (создание процесса-потомка);
•
закрытие ненужных дескрипторов в родителе и потомке;
•
замену процесса-потомка с помощью exec. заменяет текущий образ
процесса новым образом процесса
Функция popen() открывает процесс, создавая канал, производя fork и
вызывая командную оболочку. Так как канал задается однонаправленным,
аргумент type может указать только на режим чтения или записи, но не на
оба одновременно.
Аргумент command - это указатель на С-строку, содержащую командную
строку для оболочки. Эта команда передается /bin/sh с помощью флага -c
. Интерпретация, если она необходима, выполняется самой оболочкой.
Аргумент type - это указатель на C-строку, содержащую символ `r' для чтения
или `w' для записи.
Возвращаемое значение popen() - это обычный поток ввода-вывода (за
исключением того, что он должен быть закрыт только функцией pclose() , а
не fclose()). Запись в канал передается на стандартный поток ввода команды,
стандартный поток вывода команды передается в канал, кроме случаев, когда
потоки вывода-вывода переопределены самой командой.
Заметьте, что выходной поток, возвращаемый popen, по умолчанию
полностью буферизирован.
Функция pclose ожидает завершения ассоциированного процесса и
возвращает код выхода так же
Скачать