Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.03.2019
Сообщений: 55

Создание двух процессов

10.09.2019, 19:46. Показов 2012. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
// Нужно создать два процесса(родительский и дочерний). Родительский есть, понятия не имею как сделать дочерний
/* Все задание:
Процесс Parent:
1. Создаёт бинарный файл, записи которого имеют следующую структуру:

struct emp
{
int num; // номер зачётки
char fam[30]; // фамилия студента
char first_name[30]; // имя студента
char second_name[30]; // отчество студента
double grade; // средний бал
};

Имя файла и данные о студентах вводятся с консоли.
2. Выводит созданный файл на консоль.
3. Запрашивает с консоли номер зачётки, фамилию, имя и отчество студента и
новый средний бал этого студента.
4. Формирует командную строку, которая содержит имя созданного файла и
информацию, полученную в пункте 3.
5. Запускает дочерний процесс Child, которому как параметр передаётся командная
строка, сформированная в пункте 4.
6. Ждёт завершения работы процесса Child.
7. Выводит откорректированный файл на консоль.
8. Завершает свою работу.

Процесс Child:
1. Выводит на консоль информацию, полученную через командную строку.
2. Корректирует в файле, созданном процессом Parent, нужную запись, т.е.
устанавливает новый средний бал студента.
3. Завершает свою работу.
*/
//Что получилось у меня:
#include <conio.h>
#include <stdio.h>
#include <Windows.h>
#include <cstring>
#include <string.h>
#include <fstream>
#include <iostream>
#include <locale.h>
#define MAXAUTL 31
#define MAXBKS 100
#define STOP ""

using namespace std;

char* s_gets(char* st, int n);
void input(int count); void output(int count);
//void chang(int pos);

struct emp
{
int num; // номер зачётки
char fam[MAXAUTL]; // фамилия студента
char first_name[MAXAUTL]; // имя студента
char second_name[MAXAUTL]; // отчество студента
float grade; // средний бал
}a[MAXBKS];

int main(void)
{

system("cls");
setlocale(LC_ALL, "Russian");
ofstream f;
int count = 0;
f.open("D:\\Parent.dat", ios::binary);

///////////////////////////////Child////////////////////////
wchar_t lpszAppName[] = L"ConsoleProcessChild.exe";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
// создаем новый консольный процесс
if (!CreateProcess
(
lpszAppName,//ошибка, если не переименовать в "ConsoleProcessCount.exe"
NULL,
NULL,
NULL,
FALSE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi
)
)
{
wprintf(L"The new process is not created.\n");
wprintf(L"Check a name of the process.\n");
wprintf(L"Press any key to finish.\n");
getch();
return 0;
}

wprintf(L"The new process is created.\n");
////////////////////////////////////////////////////////////////////////

//////////////////////Parent////////////////////////////////////////////
count++;
input(count);
f.write(reinterpret_cast<char*>(&a), sizeof(a));
if (!f)
cout << "Информация не записана" << endl;
else
cout << "Информация записана" << endl;
f.close();
if (count > 0)
{
output(count);
}
else
cout << "Нет записей" << endl;
cout << "1 - корректировка" << endl;
////////////////////////////////////////////////////////////////////////



system("pause");
}

int index;
void input(int count)
{
system("cls");
printf("Введите фамилию:\n");
printf("Нажмите <Enter> в начале строки для останова.\n");
while (strcmp(s_gets(a[count].fam, MAXAUTL), STOP) != 0 && count < MAXBKS)
{

printf("Введите имя:\n");
s_gets(a[count].first_name, MAXAUTL);
printf("Введите отчество:\n");
s_gets(a[count].second_name, MAXAUTL);
printf("Введите номер зачетки:\n");
scanf("%d", &a[count].num);
printf("Введите оценку:\n");
scanf("%f", &a[count++].grade);
while (getchar() != '\n');
if (count < MAXBKS)
printf("Фамилия следующего:\n");
}

}
void output(int count)
{
printf("Каталог студентов:\n\n");
for (index = 1; index < count; index++)
{
printf("\nСтудент: %d \n\n", index);
printf("Фамилия: %s \n", a[index].fam);
printf("Имя: %s \n", a[index].first_name);
printf("Отчество: %s \n", a[index].second_name);
printf("Оценка: %1.2f \n", a[index].grade);
printf("Номер зачетки: %d \n", a[index].num);
}
}
/*void chang(int pos)
{
printf("Введите имя:\n");
while (strcmp(s_gets(a[pos].fam, MAXAUTL), STOP) != 0 && pos < MAXBKS)
{
printf("Введите отчество:\n");
s_gets(a[pos].second_name, MAXAUTL);
printf("Введите номер зачетки:\n");
scanf("%d", &a[pos].num);
printf("Введите оценку:\n");
scanf("%f", &a[pos].grade);
}
}*/
char* s_gets(char* st, int n)
{
char* ret_val;
char* find;
ret_val = fgets(st, n, stdin);
if (ret_val)
{
find = strchr(st, '\n');
if (find)
*find = '\0';
else
while (getchar() != '\n')
continue;
}
return ret_val;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.09.2019, 19:46
Ответы с готовыми решениями:

Создание задания, добавление процессов, удаление процессов
Здравствуйте. Уже который день бьюсь со своей лабораторной работой - не получается, и все. Идея следующая. При запуске, программа должна...

Файлы. Создание и размещение небольшого текста, создание двух дочерних процессов, вывод результи- рующего файла на экран
Помогите пожалуйста с программой. Разработайте программу, выполняющую: 1) создание файла и размещение в нем небольшого текста; 2)...

Создание двух дочерних процессов
Я всю программу сделал, но создал только 1 дочерний. Как сделать их 2 и более? Уже 3-й час не могу разобраться. Вот мое : #include...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.09.2019, 19:46
Помогаю со студенческими работами здесь

Найти среди выполняющихся процессов имена процессов, выполняющихся в двух или более экземпляров
Есть два задания: 1. Найти среди выполняющихся процессов имена процессов, выполняющихся в двух или более экземпляров. 2. Найти среди...

Взаимодействие двух процессов
Помогите пожалуйста сделать две нити. первая нить &quot;Писатель&quot; вторая нить &quot;Читатель&quot; Писатель unit FirstUnit; ...

Создание 3 процессов
Данная программа должна создавать 3 процесса: 1 процесс: p1=n+2 2 процесс: p2=k+5 3 процесс: p3=n+k родитель: c=p1+p2+p3 n и k...

Создание процессов
Задача: Дано n файлов, в каждом из которых n вещественных чисел. Имена файлов заданы массивом. Нужно подсчитать сумму элементов. Программа...

Создание процессов
Всем здравствуйте. Вопрос такой, есть ли возможность в Turbo Pascal 7.0 создавать процессы и потоки?


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru