Лабораторная работа по "Программированию"
Автор: DavidMaison • Март 23, 2019 • Лабораторная работа • 1,610 Слов (7 Страниц) • 598 Просмотры
Цель работы : Написать две (или более) программы, которые, работая параллельно зациклено, обмениваются информацией согласно варианту.
Вариант 7, 17 Первый процесс пишет в файл строку вида «pid - текущее время», каждый
раз открывая и закрывая файл, а второй процесс эту строку читает и выводит, дополняя своим pid.
1)
#include
#include
#include
#include
#include
#include
#include
#include
void GetPidOfSubstr(char* str, char* pid)
{
int i = 0, j = 0;
int checkBox = 1;
while (str[i] != '\0')
{
if (str[i] >= 48 && str[i] <= 57)
{
checkBox = 0;
pid[j] = str[i];
j++;
}
else
{
if(checkBox == 0)
{
pid[j] = '\0';
break;
}
}
i++;
}
}
void GetTimeOfSubstr(char* str, char* time)
{
int i = strlen(str), j = 0;
char tmp;
while (str[i] != ' ')
{
i--;
}
i--;
while (str[i] != ' ')
{
time[j] = str[i];
j++;
i--;
}
time[j] = '\0';
}
int main()
{
sem_t *semaphore1 = sem_open("Sem1", O_CREAT, 0777, 0);
sem_t *semaphore2 = sem_open("Sem2", O_CREAT, 0777, 0);
int size = 131072;
char data[size];
char lexeme[256];
char pid[256];
char time[256];
char str[256];
int fd, k;
read(0, data, size);
int i = 0, j = 0;
while (data[i] != '\n')
{
i++;
}
i++;
sem_wait(semaphore1);
while (data[i] != '\0')
{
if (data[i] != '\n')
{
lexeme[j] = data[i];
j++;
}
else
...