Что такое pid процесса. Управление процессами в Linux. Что такое PID



В этой статье мы попытаемся создать модуль ядра, способный изменить PID уже запущенного процесса в ОС Linux, а так же поэкспериментировать с процессами, получившими измененный PID.


Предупреждение : смена PID - нестандартный процесс, и при определенных обстоятельствах может привести к панике ядра.

Наш тестовый модуль будет реализовывать символьное устройство /dev/test, при чтении с которого процессу будет изменен PID. За пример реализации символьного устройства спасибо этой статье. Полный код модуля приведен в конце статьи. Конечно, самым правильным решением было добавить системный вызов в само ядро, однако это потребует перекомпиляцию ядра.

Окружение

Все действия по тестированию модуля выполнялись в виртуальной машине VirtualBox с 64 битным дистрибутивомLInux и версией ядра 4.14.4-1. Связь с машиной осуществлялась с помощью SSH.

Попытка #1 простое решение

Пару слов о current : переменная current указывает на структуру task_struct с описанием процесса в ядре(PID, UID, GID, cmdline, namespaces и т.д)

Первой идеей было просто поменять параметр current->pid из модуля ядра на нужный.

Static ssize_t device_read(struct file *filp, char *buffer, size_t length, loff_t * offset) { printk("PID: %d.\n",current->pid); current->pid = 1; printk("new PID: %d.\n",current->pid); , }
Для проверки работоспособности модуля я написал программу на C++:

#include #include #include int main() { std::cout << "My parent PID " << getppid() << std::endl; std::cout << "My PID " << getpid() << std::endl; std::fstream f("/dev/test",std::ios_base::in); if(!f) { std::cout << "f error"; return -1; } std::string str; f >> str; std::cout << "My new PID " << getpid() << std::endl; execl("/bin/bash","/bin/bash",NULL); }
Загрузим модуль коммандой insmod, создадим /dev/test и попробуем.

# ./a.out My parent PID 293 My PID 782 My new PID 782
PID не изменился. Возможно, это не единственное место, где указывается PID.

Попытка #2 дополнительные поля PID

Если не current->pid является идентификатором процесса, то что является? Быстрый просмотр кода getpid() навел на структуру task_struct , описывающую процесс Linux и файл pid.c в исходном коде ядра. Нужная функция - __task_pid_nr_ns. В коде функции встречается обращение task->pids.pid, этот параметр мы и изменим

Компилируем, пробуем

Так как тестировал я по SSH, мне удалось получить вывод программы до падения ядра:

My parent PID 293 My PID 1689 My new PID 1689
Первый результат, уже что-то. Но PID все равно не изменился.

Попытка #3 не экспортируемые символы ядра

Более внимательное изучение pid.c дало функцию, которая делает то, что нам нужно
static void __change_pid(struct task_struct *task, enum pid_type type,
struct pid *new)
Функция принимает задачу, для которой надо изменить PID, тип PID и, собственно, новый PID. Созданием нового PID занимается функция
struct pid *alloc_pid(struct pid_namespace *ns)

Эта функция принимает только пространство имен, в котором будет находиться новый PID, это пространство можно получить с помощью task_active_pid_ns .
Но есть одна проблема: эти символы ядра не экспортируются ядром и не могут использоваться в модулях. В решении этой проблемы мне помогла замечательная . Код функции find_sym взят оттуда.

Static asmlinkage void (*change_pidR)(struct task_struct *task, enum pid_type type, struct pid *pid); static asmlinkage struct pid* (*alloc_pidR)(struct pid_namespace *ns); static int __init test_init(void) { printk(KERN_ALERT "TEST driver loaded!\n"); change_pidR = find_sym("change_pid"); alloc_pidR = find_sym("alloc_pid"); ... } static ssize_t device_read(struct file *filp, char *buffer, size_t length, loff_t * offset) { printk("PID: %d.\n",current->pid); struct pid* newpid; newpid = alloc_pidR(task_active_pid_ns(current)); change_pidR(current,PIDTYPE_PID,newpid); printk("new PID: %d.\n",current->pid); ... }
Комплируем, запускаем

My parent PID 299 My PID 750 My new PID 751
PID изменен! Ядро автоматически выделило нашей программе свободный PID. Но можно ли использовать PID, который занял другой процесс, например PID 1? Добавим после аллокации код

Newpid->numbers.nr = 1;
Комплируем, запускаем

My parent PID 314 My PID 1172 My new PID 1
Получаем настоящий PID 1!

Bash выдал ошибку, из-за которой не будет работать переключение задач по комманде %n, но все остальные функции работают отлично.

Интересные особенности процессов с измененным PID

PID 0: войти нельзя выйти

Вернемся к коду и изменим PID на 0.

Newpid->numbers.nr = 0;
Комплируем, запускаем

My parent PID284 My PID 1517 My new PID 0
Выходит PID 0 не такой и особенный? Радуемся, пишм exit и…

Ядро падает! Ядро определило нашу задачу как IDLE TASK и, увидев завершение, просто упало. Видимо, перед завершением наша программа должна вернуть себе «нормальный» PID.

Процесс-невидимка

Вернемся к коду и выставим PID, гарантированно не занятый
newpid->numbers.nr = 12345;

Комплируем, запускаем

My parent PID296 My PID 735 My new PID 12345
Посмотрим, что находится в /proc

1 148 19 224 288 37 79 86 93 consoles fb kcore locks partitions swaps version 10 149 2 226 29 4 8 87 acpi cpuinfo filesystems key-users meminfo sched_debug sys vmallocinfo 102 15 20 23 290 5 80 88 asound crypto fs keys misc schedstat sysrq-trigger vmstat 11 16 208 24 291 6 81 89 buddyinfo devices interrupts kmsg modules scsi sysvipc zoneinfo 12 17 21 25 296 7 82 9 bus diskstats iomem kpagecgroup mounts self thread-self 13 176 210 26 3 737 83 90 cgroups dma ioports kpagecount mtrr slabinfo timer_list 139 18 22 27 30 76 84 91 cmdline driver irq kpageflags net softirqs tty 14 182 222 28 31 78 85 92 config.gz execdomains kallsyms loadavg pagetypeinfo stat uptime
Как видим /proc не определяет наш процесс, даже если мы заняли свободный PID. Предыдущего PID тоже нет в /proc, и это весьма странно. Возможно, мы находимся в другом пространстве имен и поэтому не видны основному /proc. Смонтируем новый /proc, и посмотрим что там

1 14 18 210 25 291 738 81 9 bus devices fs key-users locks pagetypeinfo softirqs timer_list 10 148 182 22 26 296 741 82 90 cgroups diskstats interrupts keys meminfo partitions stat tty 102 149 19 222 27 30 76 83 92 cmdline dma iomem kmsg misc sched_debug swaps uptime 11 15 2 224 28 37 78 84 93 config.gz driver ioports kpagecgroup modules schedstat sys version 12 16 20 226 288 4 79 85 acpi consoles execdomains irq kpagecount mounts scsi sysrq-trigger vmallocinfo 13 17 208 23 29 6 8 86 asound cpuinfo fb kallsyms kpageflags mtrr self sysvipc vmstat 139 176 21 24 290 7 80 87 buddyinfo crypto filesystems kcore loadavg net slabinfo thread-self zoneinfo
По прежнему нашего процесса нет, а значит мы в обычном пространстве имен. Проверим

Ps -e | grep bash
296 pts/0 00:00:00 bash

Только один bash, с которого мы и запускали программу. Ни предыдущего PID, ни текущего в списке нет.

М ы покажем вам, как убить процесс в Linux. Одним из главных преимуществ Linux, является возможность завершить процесс без необходимости перезагрузки сервера. В этой статье мы покажем вам, как убить процесс в Linux с помощью команды kill, pkill и killall.

1. Что такое PID

Прежде чем мы начнем, мы должны знать, что такое ID процесса (PID).

PID представляет собой цифровую идентификацию процесса в . Каждый процесс имеет уникальный PID. В самом деле, например, первый процесс, который начинается в системе на базе Linux, это процесс, и его PID устанавливается в 1. Этот процесс является родителем всех остальных процессов. Процесс инициализации не может быть убит с помощью команд kill, и это гарантирует, что это не будет случайно убит.

Теперь для того, чтобы найти PID каждого запущенного процесса на сервере мы можем выполнить следующую команду:

Это дает нам список всех запущенных процессов и их соответствующие PIDы.

Если мы хотим найти PID определенного процесса, мы можем использовать команду pidof с последующим именем процесса. Например, чтобы узнать PID нашего процесса MySQL, можно выполнить следующую команду:

Pidof mysql

Для еще более подробной информации, мы можем использовать команду ps aux вместе с grep :

Ps aux | grep mysql

Теперь, когда мы знаем, что такое PID и как найти PID конкретного процесса мы можем перейти к следующему разделу и узнать, как убить его.

2. Убить процесс с помощью команды kill в Linux

Есть несколько важных правил, которые мы должны знать, прежде чем начать использовать команду kill.

  • Вы можете убить только собственные процессы, которые принадлежат вашему идентификатору пользователя
  • Вы не можете убивать процессы других пользователей
  • Вы не можете убить системные процессы (если вы не суперпользователь)
  • Пользователь root может убить процесс любого другого пользователя и любой системный процесс

Когда мы убиваем процесс с командой kill, мы на самом деле отправляем конкретный сигнал PID-регулятор, который мы хотим убить. Следующие сигналы используются командой kill:

1 = Hung up 9 = Kill 15 = Terminate

Сигнал hung up используется редко. Чаще всего мы используем сигнал kill, и если он не работает, то мы можем использовать сигнал Terminate.

Поэтому, как только мы находим PID процесса, который мы хотим убить, используйте один из методов, описанных нами ранее, мы можем использовать команду kill -9 PID , чтобы убить процесс с этого конкретного PID.

Например, если PID равный 6738, то мы можем использовать следующую команду:

Kill -9 6738

3. Убить процесс с помощью команды pkill в Linux

Если вы хотите использовать имя процесса вместо его PID, чтобы убить его, то вы можете использовать команду pkill. Например, если процесс, который мы хотим убить называется , то мы можем использовать следующую команду, чтобы убить его:

Pkill mysql

4. Убить процесс с помощью команды killall в Linux

Две предыдущие команды используются, чтобы убить только один конкретный процесс. Но, если мы хотим убить процесс вместе со всеми его дочерними процессами мы можем использовать команду killall :

Killall mysql

В этом примере мы убьем процесс MySQL и все его дочерние процессы.

Они являются наиболее распространенными примерами убийства процесса в Linux.

Инструкция

Internet Protocol (IP) определяет доставку данных от одного узла сети до другого. При этом он не гарантирует точность доставки: пакеты при передаче могут теряться или поступать не в том порядке, в котором были отправлены. За точность отвечает протокол транс ного уровня Transmission Control Protocol – TCP. TCP устанавливает соединение, контролирует отправку и получение пакетов, дублирует свои действия в том случае, если ответ на запрос не получен или пакеты потерялись. Важно понимать, что TCP устанавливает обмен пакетами не просто между узлами, а между программными приложениями. Сетевой порт – это условное , число от 1 до 65535, которое указывает, какому приложению назначен пакет.

Узнать, какими процессами используются порты на компьютере, можно при помощи стандартных средств Windows. В меню «Пуск» нажмите «выполнить» и в командную строку введите cmd. Подтвердите ОК. В окне консоли наберите команду netstat -a -n -o.

В столбце PID указан номер процесса, в столбце « » - IP-адрес вашего компьютера и, через двоеточие, номер порта, который занят соответствующим процессом. «Внешний адрес» – это IP и номер порта удаленного узла, с которым работает какое-то приложение.

В окне консоли наберите команду tasklist. Она выдаст список всех приложений с кодом PID, которые выполняются на компьютере. Таким образом вы узнаете, какой именно процесс занимает любой порт на вашем компьютере.

Можете получить эти сведения иначе: запустите "Диспетчер задач" из командной строки, набрав taskmgr, или комбинацией клавиш Ctrl+Alt+Delete. В столбце PID найдите номер интересующего вас процесса, в столбце «Имя образа» – название соответствующего приложения или службы. Если PID не отображается в окне Диспетчера, зайдите в пункт «Вид» главного меню и выбирайте опцию «Выбрать столбцы». Поставьте флаг рядом с пунктом «Идентиф.процесса (PID)».

Когда на компьютере запускается какой-либо процесс, он получает свой pid, то есть идентификатор процесса . Иногда возникает необходимость узнать этот самый идентификатор. Возможно, вам по каким-либо причинам нужно отключить запущенный процесс, например, если он мешает удалению программы. Существует несколько способов, позволяющих узнать pid. Самый простой из них: сделать это с помощью диспетчера задач и командной строки.

Вам понадобится

  • - компьютер с ОС Windows (XP, Windows 7).

Инструкция

Нажмите на клавиатуре сочетание клавиш ctrl+alt+del. Если вашей операционной системой является Windows ХР, то диспетчер задач появится сразу, если же Windows 7 - появится окно, в котором его можно выбрать.

В выберите вкладку «Процессы». Теперь здесь же кликните по пункту «Вид». Появится дополнительное окно. В нем выберите параметр «Выбрать столбцы». Возникнет диалоговое окно, в котором самый верхний пункт будет называться «ИД процесса (pid)». Напротив него установите флажок. Сохраните настройки, нажав ОК.

Затем в диспетчере устройств пройдите во вкладку «Процессы», где вы увидите строку «ИД процесса ». Найдите в ней название процесса , идентификатор которого вам нужно узнать, и посмотрите его значение.

Теперь будет рассмотрено, это значение с помощью командной строки операционной системы. Нажмите кнопку «Пуск» и перейдите на вкладку «Все программы». Выберите «Стандартные программы». Здесь найдите пункт меню «Командная строка» и запустите его. Введите tasklist и нажмите клавишу Enter. После активации этой команды в окне командной строки появится список всех активных на данный момент процессов. После имени каждого из них будет написан его идентификатор.

Если вам необходимо быстро завершить процесс, то сделать это можно так. После того как вы узнаете идентификатор процесса , наберите в командной строке taskkill /pid 0000. Вместо нулей введите число идентификатора процесса , который требуется « ». После этого система отправит сигнал на его завершение, и он будет выключен.

Обратите внимание

При завершении процессов будьте внимательны. По неосторожности можно отключить активный процесс, который требуется для корректной работы операционной системы.

Обращение к почтовым серверам в программе The Bat! (как и в других почтовых программах) происходит через определенные порты для отправки и приема почты. Чтобы настроить работу почтовой программы, вам надо внести в параметры ящика номера портов SMTP и POP3, а также названия серверов.

Вам понадобится

  • - данные от почты.

Инструкция

Зайдите на сайт вашего почтового сервера. Например, ваш почтовый сервер mail.ru. Вам потребуется авторизоваться - то есть ввести логин и пароль, - чтобы войти в личный почтовый ящик. Найдите ссылку на помощь и кликните по ней мышью.

Список разделов помощи находится слева. Кликните по надписи «Доступ из почтовых программ» и выберите первый пункт, чтобы загрузить страницу настроек. На странице указано, что название сервера входящей почты - pop.mail.ru, а сервера исходящей - smtp.mail.ru. Это относится только к данному сервису. Как правило, у каждого постового сервера могут быть разные порты, поэтому заходите на официальный сайт в центр поддержки и узнавайте данные. Также существуют в интернете сайты, которые предоставляют информацию практически по всем сервисам, которые существуют в интернете.

Номера портов серверов исходящей и входящей почты указаны внизу страницы. Там указано, что для сервера входящей почты протоколы имеют номера 110 (если почтовая программа работает без шифрования) и 995 (с шифрованием). Чтобы узнать, какую именно цифру вводить, изучите настройки вашей почтовой программы. Номер порта исходящей почты - 25, 587 или 2525 (если почтовая программа не использует шифрование) и 465 (с шифрованием). Стандартными почтовыми портами считаются 110 и 25. В программе также могут быть по умолчанию прописаны стандартные номера портов, поэтому при необходимости вам нужно будет их исправить на правильные.

Если вы используете другой почтовый сервер, зайдите на сайт для получения настроек. Такого рода параметры всегда публичны и обычно размещаются в разделе помощи. Если в вашем предприятии используется корпоративная почта, узнать номера портов можно у администратора сети.

TCP/IP – это совокупность протоколов , которая позволяет соединить индивидуальные компьютеры и сети в общую вычислительную сеть. При помощи протоколов TCP/IP большинство прикладных программ обмениваются информацией в сети Internet.

Не смотря на свою стабильность, некоторые приложения в Linux иногда виснут. Иногда приложения перестают отзываться или просто работают так медленно, что корректно закрыть их не получается. Один из способов «убить», запущенное приложение в Linux, это использование таких команд, как kill или killall. Рассмотрим, как использовать эти команды, находить PID процесса и посылать сигнал SIGKILL.

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

ps axu | grep gcalctool

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

$ ps axu | grep gcalctool yuriy 25587 0.0 0.0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps .

Если процесс gcalctool запущен, то мы получим:

Yuriy@yuriy-NIX:~$ ps axu | grep gcalctool yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool yuriy 25624 0.0 0.0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool ». Число 25609 и есть идентификатор (PID) процесса gcalctool.

Есть еще один более простой способ узнать PID процесса — это команда pidof , которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

$ pidof gcalctool 25609

«Убиваем» процесс командой kill

Когда известен PID процесса, мы можем убить его командой kill . Команда kill принимает в качестве параметра PID процесса. Например, убьем процесс с номером 25609:

Kill 25609

Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l . Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:

Kill -9 25609

Сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

Killall gcalctool

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s . Например:

Killall -s 9 gcalctool

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

Sudo kill 123

Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1 , залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7 .

Справку по использованию любой команды можно получить командой man:

Man ps man grep man pidof man kill man killall

Операционная система UNIX Робачевский Андрей М.

Идентификатор процесса Process ID (PID)

Каждый процесс имеет уникальный идентификатор PID, позволяющий ядру системы различать процессы. Когда создается новый процесс, ядро присваивает ему следующий свободный (т. е. не ассоциированный ни с каким процессом) идентификатор. Присвоение идентификаторов происходит по возрастающий, т.е. идентификатор нового процесса больше, чем идентификатор процесса, созданного перед ним. Если идентификатор достиг максимального значения, следующий процесс получит минимальный свободный PID и цикл повторяется. Когда процесс завершает свою работу, ядро освобождает занятый им идентификатор.

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА) В ИДЕНТИФИКАТОР ИНДЕКСА Начальное обращение к файлу производится по его составному имени (имени пути поиска), как в командах open, chdir (изменить каталог) или link. Поскольку внутри системы ядро работает с индексами, а не с

Из книги Редкая профессия автора Зуев Евгений

Что такое идентификатор? Помимо неоднозначностей в синтаксисе быстро обнаружились другие неприятности. На примерах их показать сложнее, так что придется рассказывать словами.Синтаксис языка Си++ неудобен еще и в другом отношении. Если говорить коротко, то прямое

Из книги Программирование автора Козлова Ирина Сергеевна

11. Идентификатор. Ключевые слова Идентификатором называется последовательность цифр, букв и специальных символов. При этом первой стоит буква или специальный символ. Для получения идентификаторов можно использовать строчные или прописные буквы латинского алфавита.

Из книги 200 лучших программ для Интернета. Популярный самоучитель автора Краинский И

Process Guardian ХР Производитель: T.A.S. Independent Programming (http://www.tas-independent-programming.com).Статус: бесплатная.Ссылка для скачивания: http://www.tas-independent-programming.com/cgi-bin/countdown.pl?Guardian.exe.Размер: 2,4 Мбайт.Главное предназначение этой утилиты – управлять запущенными на компьютере процессами.После

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Идентификатор открытого файла В состав класса CFile входит элемент данных m_hFile типа UINT. В нем хранится идентификатор открытого файла. Если вы создали объект класса CFile, но еще не открыли никакого файла, то в m_hFile записана константа hFileNull.Обычно нет необходимости

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Идентификатор транзакций Другая часть стратегии тайм-аутов и повторных передач заключается в использовании идентификаторов транзакций (transaction ID или XID) для распознавания запросов клиента и ответов сервера. Когда клиент вызывает функцию RPC, библиотека присваивает этому

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

16.7 Временная метка и идентификатор сообщения При получении почты интересно узнать время ее отправления и получения. SMTP добавляет эту информацию к пересылаемому сообщению. Кроме того, этот протокол отслеживает все хосты, которые передавали почтовое сообщение, и время

Из книги Adobe Audition 3 учебник автора Автор неизвестен

Dynamic EQ (process) Эффект Dynamic EQ варьирует количество фильтрации со временем. Например, в первой половине волны вы можете поднять высокие частоты, а во второй - изменить ширину затрагиваемой полосы частот. Окно Dynamic EQ имеет три вкладки: Gain, Frequency, и Q (bandwidth). 1. Frequency graph (график

Из книги Справочник по PHP автора

Pan/Expander (process) Эффект Pan/Expand позволяет переместить центральный канал (моно составляющую) из стерео сигнала, а также расширить или сузить стерео разделение левого и правого каналов.Центральный канал панорамируется используя центральный и окружающие каналы стерео записи,

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Stretch (process) Эффект Stretch позволяет изменять высоту тона (питч) звукового сигнала, темп или то и другое. Например, вы можете использовать этот эффект, чтобы увеличить высоту тона фонограммы без изменения ее длительности, или же наоборот изменить длительность не изменяя

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Идентификатор сессии Итак, идентификатор сессии является именем временного хранилища, которое будет использовано для хранения данных сессии между запусками сценария. Один SID - одно хранилище. Нет SID, нет и хранилища, и наоборот.Так как же соотносится идентификатор и имя

Из книги Операционная система UNIX автора Робачевский Андрей М.

10.2.1. Идентификатор процесса и происхождение Два из наиболее фундаментальных атрибутов - это идентификатор процесса (process ID), или pid, а также идентификатор его родительского процесса. Идентификатор pid - это положительное целое число, которое уникально идентифицирует

Из книги автора

10.2.3. Идентификатор uid файловой системы В очень специальных случаях программе может понадобиться сохранять свои права root для всего, кроме доступа к файловой системе, при котором она использует пользовательский uid. Изначально использовавшийся в Linux NFS-сервер пространства

Из книги автора

Идентификатор домена При создании в базе данных домена вы должны задать идентификатор домена, который является глобально уникальным в базе данных. Разработчики часто используют префикс или суффикс в идентификаторах доменов для улучшения документирования. Например:CREATE

Из книги автора

Из книги автора

Идентификатор родительского процесса Parent Process ID (PPID) Идентификатор процесса, породившего данный



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: