
Выполнение Получение информации о процессе
Для получения информации о процессе используем следующий код
#include<stdlib.h> /*подключение стандартной библиотеки */
#include <sys/resource.h> /*подключение файла с идентификаторами ресурсов*/
int main(int arge, char **argv, char **cnv)
{
printf("\n Process Informaition: \ n");
printf("Process name = \t \t %s \n", argv[0]);
printf("User ID = \t \t < %d > \n", getuid(0));
printf("Effective User ID = \t< %d >\n", geteuid(0));
printf("Group ID = \t \t < %d > \n", getgid(0));
printf("Effective Group ID = \t < %d > \n", getegid(0));
printf("Process Group ID = \t < %d > \n", getpgid(0));
printf("Process ID ( PID )= \t < %d > \n", getpid(0));
printf("Parent PI D ( PPI D ) = \t< %d > \n", getppid(0));
printf("Process priori t y = \t < %d > \n", getprio(0));
return EXIT_SUCCESS; /* возвращаем значение успешного завершения программы */
}
Функция printf()является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной.
Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата.
Спецификаторы формата:
%с |
символ |
%d |
целое десятичное число |
%i |
целое десятичное число |
%e |
десятичное число в виде x.xx e+xx |
%E |
десятичное число в виде x.xx E+xx |
%f |
десятичное число с плавающей запятой xx.xxxx |
%F |
десятичное число с плавающей запятой xx.xxxx |
%g |
%f или %e, что короче |
%G |
%F или %E, что короче |
%o |
восьмеричное число |
%s |
строка символов |
%u |
беззнаковое десятичное число |
%x |
шестнадцатеричное число |
%X |
шестнадцатеричное число |
%% |
символ % |
%p |
указатель |
%n |
указатель |
Например, если команда :
printf("%d",20); выводит результат: 20
Кроме спецификаторов формата данных в управляющей строке могут находиться управляющие символы:
\f |
Новая страница, перевод страницы |
\n |
Новая строка, перевод строки |
\r |
Возврат каретки |
\t |
Горизонтальная табуляция |
\v |
Вертикальная табуляция |
\" |
Двойная кавычка |
\' |
Апостроф |
\\ |
Обратная косая черта |
\0 |
Нулевой символ, нулевой байт |
\a |
Сигнал |
\N |
Восьмеричная константа |
\xN |
Шестнадцатеричная константа |
\? |
Знак вопроса |
Чаще всего используется символ \n. С помощью этого управляющего символа вы сможете переходить на новую строку.
Пример программы.
#include <stdio.h>
void main(void)
{
printf("Здравствуйте!\n"); // После печати будет переход на новую строку - \n
printf("Меня зовут Павел."); // Это будет напечатано на новой строке
}
Результат работы программы:Здравствуйте! Меня зовут Павел.
Для вывода данных о процессе используются функции: argv() getuid() geteuid() getgid() getegid() getpgid() getpid() getppid() getprio(), а в качестве аргумента передается 0 – идентификатор процесса самой программы.
Жизненный цикл процесса можно разделить на четыре этапа:
создание процесса
загрузка образа процесса;
выполнение процесса.
завершение процесса