Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134

Как реализовать программу с wait?

31.05.2012, 14:13. Показов 4137. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++ (Qt)
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
#include <stdio.h>
int pid,i;
int main()
{
  pid=fork();
  if (pid<0)
    {
      write(1 , "Error\n" , 7);
      exit(0);
    }
  else
     if (pid==0)
       {
         printf("Дочерний процесс запущен. PID=%d, PPID=%d, GID=%d \n", getpid(),getppid(), getgid());
         sleep(2);
         printf("Дочерний процесс  %d завершен\n", getpid());
         exit(0);
        }
      else
        {
         printf("Родительский процесс запущен. PID=%d, PPID=%d, GID=%d \n", getpid(),getppid(),getgid());
         printf("Родительский процесс %d завершен \n", getpid());
         exit(0);
         }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2012, 14:13
Ответы с готовыми решениями:

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

Подскажите как while заменить на wait?
Там первый цикле while нужно заменить на wait. Как сделать подобную операцию, но ваит должен ждать разблокировки файла после else. ...

Как использовать функцию wait()?
как правильно используют ф-ю wait() для процессов, какие параметры передают в скобках?

15
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
31.05.2012, 14:16
Воткнуть wait между сообщениями родителя же.
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
31.05.2012, 14:29  [ТС]
вместо sleep? а что в скобках то писать ???
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
31.05.2012, 14:51
Между 21 и 22. Если причины смерти и возвращаемое значение потомка не интересуют, то можно передавать NULL.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.05.2012, 19:52
Александр "КАС", без wait процесс в зомби уходит. Если не нужно ожидать, то можно пользоваться waitpid. Константа WNOHANG для аргумента options тогда нужна.
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
31.05.2012, 19:57  [ТС]
мне надо написать программу, в которой процесс порождает новый и позволяет порожденному процессу завершиться.
Должен родительский процесс завершился раньше порожденного. Какой процесс становится родительским для порожденного после того, как исходный родительский процесс завершился?
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
31.05.2012, 20:00  [ТС]
Я уже не знаю как еще можно написать
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
31.05.2012, 20:01
init становится родителем.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.05.2012, 20:04
Цитата Сообщение от Александр "КАС" Посмотреть сообщение
Должен родительский процесс завершился раньше порожденного.
Если родительский раньше поражденного, то
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if ( (pid = fork()) < 0 ) 
{
    /* Error */
}
else
    if ( !pid )
    {
        sleep(10);
        exit(0);
    }
    else
    {
        if ( waitpid(pid, NULL, WNOHANG) == -1 )
        {
             /* Error */
        }
        exit(0);
    }
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
31.05.2012, 21:58
go, чего ради здесь waitpid?
Код из топика вполне соответствует задаче, разве что для гарантии гонять слип в цикле, проверяя в условии, жив ли родитель(сравнивая возврат getppid с единицей).
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.05.2012, 23:06
NoMasters, так читать нужно было все сообщения.

Цитата Сообщение от NoMasters Посмотреть сообщение
разве что для гарантии гонять слип в цикле, проверяя в условии,
Это сильно грузит процессор.
Цитата Сообщение от NoMasters Посмотреть сообщение
go, чего ради здесь waitpid?
Цитата Сообщение от Александр "КАС" Посмотреть сообщение
Как реализовать программу с wait?
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
31.05.2012, 23:26
go, что сильно грузит процессор, если в теле слип?
Как реализовать программу с wait?
А толку, если дочерний процесс гарантировано завершится позже?
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
01.06.2012, 07:40  [ТС]
я пытался сдать со слипами но препод сказал что это не гарантировано ччто будет работать правильно, надо написать с вайтом чтоб 100% работал прога
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
02.06.2012, 13:32  [ТС]
А таким образом можно написать???
Миниатюры
Как реализовать программу с wait?  
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
02.06.2012, 20:51
Александр "КАС", не правильно.
0
 Аватар для Александр "КАС"
1 / 1 / 0
Регистрация: 19.01.2011
Сообщений: 134
02.06.2012, 20:56  [ТС]
Go, помоги ине сделать ее рабочей
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2012, 20:56
Помогаю со студенческими работами здесь

Не понятно как работает пример std::condition_variable::wait
Здравствуйте! Разбираюсь с std::condition_variable и не могу понять пример кода из cppreference.com. Вот он: #include &lt;iostream&gt;...

Подскажите КАК сделать курсор мыши в WAIT для окошка?
Всем привет! Из апплета открывается окошко (Frame) мы там чтото вводим затем нажимаем кнопку и запускаем процедурку. Надо чтобы это...

Потоки: как правильно работать с wait(), notify() и synchronized() на примере задачи?
Задача: Есть производитель машин - Factory. Есть потребитель - Dealer. Они работают в двух потоках над общим складом. Factory производит и...

Как разбудить (из wait) один конкретный поток из множества других по какому нибудь параметру?
Доброго времени суток! Подскажите пожалуйста, как разбудить (из wait) один конкретный поток из множества других по какому нибудь параметру?

Как сделать при нажатии на кнопку (отправлении команды во ViewModel) Cursor.Wait у окна?
Здравствуйте, возникла жуткая потребность, чтобы сделать при нажатии на кнопку (отправлении команды во ViewModel) Cursor.Wait у окна, НО,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru