#c #stack
#c #стек
Вопрос:
Рассмотрим следующий код :
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
;
pthread_mutex_t mutex;
void *camera_function(void *arg)
{
int picture[4096][4096];
pthread_mutex_lock(amp;mutex);
int cnum = *(int *)arg;
for (;;)
{
bool suspicious = true;
if(suspicious)
// send message to the parent process
sleep(S);
}
pthread_mutex_unlock(amp;mutex);
}
// Security process
//This will call the camera function
int main()
{
int N = 10, S = 10;
pthread_t CameraPids[10];
for (int i = 0; i < N; i )
{
int cnum = i;
pthread_create(amp;CameraPids[i], NULL, camera_function, (void *)amp;cnum);
}
return 0;
}
В приведенном выше есть комментарий // отправить сообщение родительскому процессу
Что я хочу сделать, это отправить некоторое сообщение родительскому процессу, который в данном случае является основной функцией. И основная функция должна напечатать это сообщение, как мне этого добиться?
Комментарии:
1. Может ли это быть какой-то сигнал, который мы можем отправить родительскому процессу? И если этот сигнал получен, родительский процесс обрабатывает его
2. В вашем цикле
suspicious
инициализируетсяtrue
при каждом взаимодействии цикла. Таким образом, вы будете бесконечно зацикливаться. Вы вообще не используете своюcond
переменную. Что вы подразумеваете под «отправить сообщение»? Вы имеете в видуmsgsnd/msgrcv
? Или вы хотите поместить некоторые данные в общий буфер, закрытый переменной mutex и cond?3. Это правда, я просто поместил его как фиктивный код. Потому что основное намерение состоит в том, чтобы созданные потоки могли взаимодействовать с функцией / процессом main(). Итак, скажите suspective = function_Call(), а затем, если он возвращает true, отправьте сигнал основному процессу. Это может быть что угодно signal / msgsnd . Я хочу, чтобы suspective= true тогда основной метод должен вывести сообщение ** обнаружена уязвимость**