1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 55
1

Упростить передачу переменной в дочерний процесс

09.06.2020, 22:26. Показов 383. Ответов 1

Author24 — интернет-сервис помощи студентам
Как можно еще упростить этот код, чтобы просто передать переменную a из родительского процесса в другой дочерний процесс и вывести его там? и чтобы еще можно было вместо этой переменной передать массив чисел

родительский процесс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <Windows.h>
#include <iostream>
#include <string>
//родительский
int main()
{
    using namespace std;
    int a = 10;
    std::string cl;
    cl += " A " + std::to_string(a);
    STARTUPINFO cif;
    ZeroMemory(&cif, sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if (!(CreateProcess("C:\\Users\\Kent and am\\source\\repos\\1labos\\Debug\\child1labos.exe", const_cast<char*>(cl.c_str()),
        NULL, NULL, FALSE, NULL, NULL, NULL, &cif, &pi) == TRUE))
    {
        cout << "Child process not created" << endl;
    }
    cout << "exit_parent" << std::endl;
    return 0;
}
дочерний процесс
C++
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
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
//дочерний
std::vector<std::string> wrap_command_line(std::size_t argc, char* argv[]) {
    std::vector<std::string> ret;
    for (std::size_t i = 0; i < argc; ++i)
        ret.emplace_back(argv[i]);
    return ret;
}
std::string getArgument(const std::string& name, const std::vector<std::string>& args) {
    auto key = std::find(std::begin(args), std::end(args), name);
 
    if (++key == std::end(args))
        throw std::invalid_argument{ (" " + name).c_str() };
    return *key;
}
double getDoubleArg(const std::string& name, const std::vector<std::string>& args) {
    return std::stod(getArgument(name, args));
}
int main(int argc, char* argv[])
{
    try {
        std::cout << "child: start" << std::endl;
        auto args = wrap_command_line(argc, argv);
        auto a = getDoubleArg("A", args);
 
        std::cout << "child:  " << " value = " << a << std::endl;
        std::cout << "exit_child" << std::endl;
    }
    catch (const std::exception & e) {
        std::cerr << "error: " << e.what() << std::endl;
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2020, 22:26
Ответы с готовыми решениями:

Запущен ли процесс? или Завершен ли дочерний процесс моей программы?
Моя программа выполняет execute('cmd', '/C ...'). На момент execute-а других экземпляров cmd.exe...

Родительский и дочерний процесс: процесс не переходит обратно к родителю
Здравствуйте знаю что тема уже была, но все же! создаю элементарную программу, пока просто 1...

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему?
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и висеть в системе. ...

Дочерний процесс
Скажите, пожалуйста, где описывать дочерние процессы. То есть я создаю, допустим в Visual c++...

1
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
10.06.2020, 11:16 2
Цитата Сообщение от Kameramann Посмотреть сообщение
Как можно еще упростить этот код, чтобы просто передать переменную a из родительского процесса в другой дочерний процесс и вывести его там? и чтобы еще можно было вместо этой переменной передать массив чисел
Через командную строку - это не "передача в дочерний процесс". Подозреваю, тебе нужно было сделать что-то типа вот этого - Creating Named Shared Memory
0
10.06.2020, 11:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2020, 11:16
Помогаю со студенческими работами здесь

Дочерний процесс
Как передать аргумент size в дочерний процесс?) Как объявить массив??? На ubuntu компилятор gcc...

Создать дочерний процесс
Помогите пожалуйста с программой на C++. Экзамен по операционным системам. Нужно создать дочерний...

Родительский и дочерний процесс
Для начала код. ProcessA#include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; int...

Найти дочерний процесс
Прошу помочь. Много лет пользуюсь загрузчиком для оперы собственной разработки, но появилась...

Завершить дочерний процесс
как можно завершить дочерний процесс не трогая основной тема на форуме есть но там про bat , а...

Заморозить дочерний процесс
Помогите,можно пример заморозки дочернего процесса? Я не знаю как это сделать,уже минут 20...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru