Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328

Реализация функции wait

13.12.2013, 21:34. Показов 3306. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Где можно найти реализацию ф-ии wait в исходных текстах ядра? У меня стоит задание найти реализацию функции wait, которая ожидает завершение дочернего процесса и объяснить как она релизована, но я слышал что её реализации может и не оказаться, тогда будет необходимо пояснить почему её нет.
Простым поиском по ядру удалось найти файлы wait.c и несколько с таким же именем, но нигде нет реализации конкректно функции wait.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2013, 21:34
Ответы с готовыми решениями:

Java.lang.IllegalMonitorStateException: object not locked by thread before wait() при вызове метода wait()
Здравствуйте! На этот раз, у меня проблема с вызовом метода wait() в новом фоновом потоке. Подскажите, как можно исправить код, чтобы...

Реализация функции печати результатов предыдущей функции
Была написана программа с функцией, находящая результат выражения с аргументом, значения которого заданы параметром со значениями и шагом....

pid_t wait
Добрый день, подскажите пожалуйста вот в функции(unix) pid_t wait(int *status) что такое status? Видела во многих примерах его ставят 0, но...

11
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
14.12.2013, 01:09
танкист34, Перед созданием процесса создаётся структура PCB (process control block), которая содержит список идущих подряд команд CPU, текущий стейт самого процесcа, поинтер на такюже структуру parent процесса, и если есть child процесса (организовано в виде обычного linked list, т.к. чалдов может быть много), и т.д. Что касается поля стейт процесса, то он может быть в 5 состояниях: started, ready, work, wait, terminated. Когда child процесс переходит в стейт terminated, он просто дёргает по поинтеру своего parenta, и извещает ему о том, чтоб он освободил ресурсы выделенные для этого child. Я думаю, что именно так организована функция wait.
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
14.12.2013, 02:12  [ТС]
Цитата Сообщение от xtorne21st Посмотреть сообщение
танкист34, Перед созданием процесса создаётся структура PCB (process control block), которая содержит список идущих подряд команд CPU, текущий стейт самого процесcа, поинтер на такюже структуру parent процесса, и если есть child процесса (организовано в виде обычного linked list, т.к. чалдов может быть много), и т.д. Что касается поля стейт процесса, то он может быть в 5 состояниях: started, ready, work, wait, terminated. Когда child процесс переходит в стейт terminated, он просто дёргает по поинтеру своего parenta, и извещает ему о том, чтоб он освободил ресурсы выделенные для этого child. Я думаю, что именно так организована функция wait.
это всё в теории, у меня и алгоритм есть, но мне нужен код
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
14.12.2013, 02:43
танкист34, это всё на самом деле
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
14.12.2013, 03:17  [ТС]
Цитата Сообщение от xtorne21st Посмотреть сообщение
танкист34, это всё на самом деле
не понял про что вы, но думаю код реализации существует у любой функции...
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
15.12.2013, 08:28  [ТС]
тема актуальна
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
15.12.2013, 08:34
Ну можно выкачать исходники ядра и сделать что-то типа
Bash
1
grep -R SYSCALL_DEFINE . | grep wait
Мб выйдешь на что-то такое... http://lxr.linux.no/linux+v3.1... it.c#L1502
1
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
15.12.2013, 12:12  [ТС]
0x10, а почему реализация хранится не, например, в wait.c, а в exit.c ? можете пояснить.. Запутался между реализациями функций в библиотеках и в ядре
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
15.12.2013, 12:23
Цитата Сообщение от танкист34 Посмотреть сообщение
а почему реализация хранится не, например, в wait.c, а в exit.c
Тут не подскажу. В glibc реализация в sysdeps/unix/sysv/linux/wait.c - как будто даже логично.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* Copyright (C) 1991-2013 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
 
   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
 
   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */
 
#include <sys/wait.h>
#include <errno.h>
#include <sys/resource.h>
#include <stddef.h>
#include <sysdep-cancel.h>
 
/* Wait for a child to die.  When one does, put its status in *STAT_LOC
   and return its process ID.  For errors, return (pid_t) -1.  */
pid_t
__libc_wait (__WAIT_STATUS_DEFN stat_loc)
{
  if (SINGLE_THREAD_P)
    return INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
               (struct rusage *) NULL);
 
  int oldtype = LIBC_CANCEL_ASYNC ();
 
  pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
                 (struct rusage *) NULL);
 
  LIBC_CANCEL_RESET (oldtype);
 
  return result;
}
 
weak_alias (__libc_wait, __wait)
weak_alias (__libc_wait, wait)
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
15.12.2013, 12:48  [ТС]
0x10, я по-моему распутал кашу в голове, благодая этому
Каждая конкретная Linux система создается для работы одного или нескольких приложений. Однако, кода самого приложения недостаточно, чтобы извлечь необходимый пользователям сервис из аппаратуры. Большинство приложений использует в своей работе обращения к функциям библиотек. Стандарт LSB Core 3.1 определяет следующие системные библиотеки: libc, libcrypt, libdl, libm, libpthread, librt, libutil, libpam, libz, libncurses. В современных Linux системах интерфейсы этих системных библиотек реализуются реальными библиотеками glibc, Linux-PAM, zlib и ncurses, которые на самом деле предоставляют большее число интерфейсов, чем 1532 функции, определенные в LSB Core (т.е. LSB Core специфицирует некоторое подмножество интерфейсов реальных библиотек).

Функции системных библиотек можно классифицировать следующим образом по степени взаимодействия с ядром Linux.

1)Реализация функции полностью содержится в библиотеке и ядро не используется (например strcpy, tsearch).
2)В библиотеке реализуется тривиальная “обертка” (wrapper) для вызова соответствующего интерфейса ядра (например read, write).
3)Реализация функции содержит как вызовы системных интерфейсов ядра (причем возможно нескольких разных), так и часть кода в самой библиотеке (например pthread_create, pthread_cancel).
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
15.12.2013, 13:37
0x10, Это всего лишь сигнал usermoda (простая инструкция с параметрами). А вот как реагирует на него ядро, надо смотреть в сорцах ядра.
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
15.12.2013, 14:46  [ТС]
xtorne21st , вы про какой именно его пост говорите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2013, 14:46
Помогаю со студенческими работами здесь

Sleep or Wait
Добрый день вот можно сказать начал изучать С# два дня назад и наткнулся на не большую проблему. Проблема в том что после запуска метода...

WAIT на CODESYS 2.3
Добрый день. Задача следующая, необходимо после каждого цикла поставить счетчик обратного времени, чтобы программа ждала определенное...

Функция wait
Доброго времени суток. Передо мной встал вопрос на который я не могу дать ответ, может ктонибудь знает. Вопрос: определить, что должно...

Блокировка на Wait
https://andrey.moveax.ru/post/csharp-async-wait-deadlocks Не совсем понял. То есть await Task.Delay(200) Будет...

Proc.wait
Имеется &lt;div class=&quot;sp-wrap&quot;&gt;&lt;div class=&quot;sp-head-wrap&quot;&gt;&lt;div class=&quot;sp-head folded clickable&quot;&gt;код&lt;/div&gt;&lt;/div&gt;&lt;div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru