ansi2knr oldfile.c newfile.c
21.3.2. as
Программа as — это GNU-версия ассемблера, предназначенная для создания объектных файлов из программ, написанных на языке ассемблера. Формат вызова:
as [ключи] файл1 [файл2 ... файлN]
Ключи программы as Таблица 21.2
Ключ | Назначение |
---|---|
-а | Вывод листинга |
-ad | He выводить отладочные сообщения |
-ad | Включение в листинг текста программы, написанной на языке высокого уровни, если компиляций проводилась с ключом -g |
-al | Вывод листинга на ассемблере |
-an | Не обрабатывать форм |
-as | Вывод списка символов программы |
-aфайл | Вывести листинг в указанный файл |
-f | Быстрый режим. Директивы препроцессора не обрабатываются |
-iпуть | Добавить указанный путь к Include-пути |
-MRI | Обеспечить MRI-совместимость |
-о файл | Создание объектного файла с указанным именем |
-R | Поместить сегмент данных в сегмент кода |
-v | Вывод версии |
-W | Не выводить предупреждения |
21.3.3. bison
Программа bison — это грамматический разборщик (парсер): она создает C-программу, предназначенную для разбора определенной грамматики. Данная программа вам не понадобится до тех пор, пока вы не захотите написать собственный компилятор. Ключи программы представлены в таблице 21.3. Формат вызова:
bison [ключи] файл
Ключи программы bison Таблица 21.3
Ключ | Назначение |
---|---|
-b префикс | Использовать указанный префикс для имени входящего файла |
-d | Создать заголовочный файл, содержащий информацию о типах грамматических образцов (токенов), которые определены в вашей грамматике |
-I | Не вставлять код в существующие файлы |
-о файл | Установить файл результата |
-t | Включить отладочную информацию |
-v | Записать созданную программу в файл у.out put |
21.3.4. flex
flex [параметры] файл
Это еще одна программа, которая пишет код за нас. Flex может написать программу на языке С, которая будет искать заданные образны текста в текстовых файлах и выполнять определенные действия, заданные программистом. Если вам нужна эта программа, тогда самое время прочитать страницы руководства man flex.
21.3.5. gprof
Программы вроде gprof называются профайлерами. Они предназначены для определения быстродействия вашей программы. Для каждого вызова функции вашей программы профайлер выводит время ее выполнения. Вы как программист анализируете полученную информацию и, если нужно, оптимизируете исходный код вашей программы.
21.3.6. strip
Утилита strip удаляет таблицу символов из объектного файла.
21.4. Пример программы на С
В п. 9.2.3 я сказал о состояниях процесса и перечислил среди них состояние «зомби». Зомби — это процесс, который уже завершился, но его родитель еще не получил сигнала о его завершении и не удалил его структуру из таблицы процессов. Такое может произойти, когда процесс-родитель почему-либо не готов к завершению потомка. Сейчас мы искусственно создадим такого зомби. Процесс-родитель породит потомка и уснет на 10 секунд. Потомок завершится через 2 секунды, а в течение 8 секунд он будет находиться в состоянии зомби. Напоминаю, что состояние процесса можно увидеть по команде top.
Листинг 21.3. Файл zombie.с
#include
#include
#include
#include
#include
int main() {
int pid;
int status, died;
pid=fork();
switch(pid) {
case -1:
printf("ошибка fork\n");
exit(-1);
case 0:
printf(" Я потомок процесса %d\n", getppid());
printf(" Мой PID %d\n", getpid());
// Ждем 2 секунды и завершаемся
sleep(2);
exit(0);
default:
printf("Я родитель.\n");
printf("Мой PID %d\n" , getpid());
// Ждем завершения дочернего процесса
// через 10 секунд, а потом убиваем его
sleep(10);
if (pid & 1)
kill(pid,SIGKILL);
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии