Nano Hash - криптовалюты, майнинг, программирование

Как получить сигнал от ребенка

Напишите программу, которая создает дочерний процесс с помощью fork(). Дочерний процесс печатает имя своего родителя, Parent ID и Own ID, пока родитель ожидает сигнала от дочернего процесса. Родитель устанавливает будильник через 10 секунд после прекращения действия Дочернего элемента.

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

что я должен делать?

using namespace std;

static int alarm_fired = 0;

void ding(int sig)
{

sleep(10);

 cout<<"Alarm\n";


}

int main()
{

int cpid,i,ppid;

int status = 0;

cpid=fork();

switch(cpid)

{

case -1:

        cout<<"error";

break;

case 0:

        cout<<"Child Block"<<endl;

        cout<<"Parent\n"<<"ParentID: "<<getppid()<<"\nChildID: "<<getpid();

        kill(getppid(), SIGALRM);

default:
        cout<<"Parent Waiting"<<endl;

        wait(&status);

        cout<<"Parent Waiting is Finished"<<endl; 

        signal(SIGALRM, ding);        
}
}

Ответы:


1

Вам необходимо настроить родительский обработчик сигналов "signal(SIGALRM, ding)" до того, как ребенок отправит SIGALARM. В вашем случае вы можете переместить «сигнал (SIGALRM, ding)» на одну строку выше fork().

21.03.2015
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..