rec2.c– процесс в пассивном состоянии.
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>
void action();
main()
{
signal (SIGUSR1, action);
sleep(15);
}
void action()
{
time_t t;
printf(" rec2:\t\t%i\n", time(&t));
exit(0);
}
srec – скрипт для демонстрации работы 3 примеров.
#!/bin/ksh
make rec1
make rec2
make send
./send
Пример работы скрипта:
# ./srec
cc rec1.c -o rec1
cc rec2.c -o rec2
cc send.c -o send
send: 1227470044 to rec1
rec1: 1227470044
send: 1227470044 to rec2
rec2: 1227470044
Таким образом время получения процессом адресованного ему сигнала не зависит от состояния процесса.
nice –n[inc] command – системная утилита добавляющая значение аргумента inc к значению nice-приоритета вызывающего процесса.
intgetprio(pid_tpid) – команда определяющая приоритеты процессов.
prior.c– программа определения приоритета процесса.
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>
main()
{
printf(" priority = %i\n", getprio(getpid()));
system("ps -l >>prio_log.txt");
}
Пример использования:
# make prior
cc prior.c -o prior
# ./prior
priority = 10
# nice -n-6 ./prior
priority = 16
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
00010000 - 0 335894 2 - 10 0 - 612K - ? 00:00:00 login
00000210 - 0 718039 479263 - 10 0 - 2380K - ? 00:00:02 pfm
00010200 - 0 434203 1 - 10 0 - 2028K - ? 00:00:13 pwm
00000210 - 0 5718044 479263 - 10 0 - 2160K - ? 00:00:10 pterm
00000200 - 0 479263 1 - 10 0 - 3032K - ? 00:01:19 shelf
00000200 - 0 479263 1 - 10 0 - 3032K - ? 00:01:19 shelf
00000200 - 0 516128 1 - 10 0 - 4392K - ? 00:00:01 bkgdmgr
00000200 - 0 516129 1 - 10 0 - 1740K - ? 00:00:03 wmswitch
00000200 - 0 516130 1 - 10 0 - 2016K - ? 00:00:17 saver
00010200 - 0 5718051 5718044 - 10 0 - 776K - ? 00:00:00 /bin/sh
00000000 - 0 6807588 5718051 - 16 0 - 600K - ? 00:00:00 ./prior
00000210 - 0 6492197 479263 - 10 0 - 4904K - ? 00:00:06 helpviewer
00000200 - 0 6492198 6492197 - 10 0 - 10068K - ? 00:00:05 vserver.file
00000000 - 0 6815783 6807588 - 16 0 - 744K - ? 00:00:00 sh
00000000 - 0 6815784 6815783 - 16 0 - 612K - ? 00:00:00 ps
Изменение приоритета процесса затрагивает и его потомков. Приоритет наследуется.
nohupcommand[argument…] – запуск указанной команды с игнорирование сигналов потери связи(hangup) и увеличением приоритета для планировщика задач на 5; т.о. команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы.
nohup.c– программа для иллюстрации работы команды nohup.
#include <stdlib.h>
main()
{
while(1)
{
sleep(1);
}
}
Пример работы программы:
# nohup ./nohup&
[1] 7106596
# appending output to nohup.out
# ps -f
UID PID PPID C STIME TTY TIME CMD
0 335894 2 - Nov23 ? 00:00:00 login
0 434203 1 - Nov23 ? 00:00:14 pwm
0 5718044 479263 - Nov23 ? 00:00:13 pterm
0 479263 1 - Nov23 ? 00:01:23 shelf
0 479263 1 - Nov23 ? 00:01:23 shelf
0 516128 1 - Nov23 ? 00:00:01 bkgdmgr
0 516129 1 - Nov23 ? 00:00:04 wmswitch
0 516130 1 - Nov23 ? 00:00:18 saver
0 5718051 5718044 - Nov23 ? 00:00:00 /bin/sh
0 7106596 5718051 - Nov23 ? 00:00:00 ./nohup
0 6492197 479263 - Nov23 ? 00:00:08 helpviewer
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.