Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
1

Изменение приоритета в дочернем процессе

03.04.2011, 01:16. Показов 1835. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание состоит в следующем:нужно написать программу, которая запускает 2 процесса, один управляемый(любая программа), а второй управляющий. Программа передает в управляющий дочерний процесс дескриптор управляемого.Нужно изменять приоритеты управляемого процесса.
У меня не получается изменить приоритеты в дочернем управляющем. В самой программе приоритет изменяется без проблем. Подскажите где не так.
Это главная программа
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#undef UNICODE
#undef _UNICODE
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
    //создаем контролируемый процесс
    STARTUPINFO suiControlled = {0};
    ZeroMemory(&suiControlled, sizeof(suiControlled));
    suiControlled.cb = sizeof(suiControlled);
 
    PROCESS_INFORMATION piControlled;
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(sa);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
 
    bool makeProcessControlled = CreateProcess("C:\\Program Files (x86)\\Notepad++\\notepad++.exe",
                        NULL,&sa,&sa,TRUE,0,NULL,"C:\\TEMP",&suiControlled,&piControlled);
    if(!makeProcessControlled) {
        MessageBox(NULL,"Контролируемый процесс не создан","Error",MB_OK);
        return 0;
    }
    
        //получаем дескриптор контролируемого процесса
    HANDLE handleProcess = piControlled.hProcess;
 
 
    //создаем контролирующий процесс
    char cmdLine[500];
    //HANDLE logFile=CreateFile(TEXT("E:\\Practice
 
    wsprintf(cmdLine,"E:\\UNIVER\\OS\\Labs comleted\\lab3\\lab3\\Debug\\lab3.exe %d",(int)handleProcess);
 
    STARTUPINFO suiManager = {0};
    ZeroMemory(&suiManager, sizeof(suiManager));
    suiManager.cb = sizeof(suiManager); 
 
    PROCESS_INFORMATION piManager;
    
    bool makeProcessManager = CreateProcess(NULL,TEXT(cmdLine)
        ,&sa,NULL,false,0,NULL,"C:\\TEMP",&suiManager,&piManager);
 
    if(!makeProcessManager) {
        MessageBox(NULL,"Контролирующий процесс не создан","Error",MB_OK);
        return 0;
    }
 
    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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#undef UNICODE
#undef _UNICODE
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main(int argc, char* argv[]){
        //получаем дескриптор из командной строки
    HANDLE control = (HANDLE)atoi(argv[1]);
    int command = 0;
    while(command != -1) {
        cout<<"Set priority process (1,2,3,4,5 or 6, -1 exit): ";
        cin>>command;
                //пытаемся изменить
        switch(command) {
            case 1:{
                bool result = SetPriorityClass(control,NORMAL_PRIORITY_CLASS);
                if(result){
                    cout<<"Change priority to NORMAL_PRIORITY_CLASS"<<endl;
                } else {
                    cout<<"Priority not cheanged!"<<endl;
                }
                break;
            }
            case 2:{
                bool result = SetPriorityClass(control,BELOW_NORMAL_PRIORITY_CLASS);
                //out<<"Change priority to BELOW_NORMAL_PRIORITY_CLASS"<<endl;
                break;
            }
            case 3:{
                bool result = SetPriorityClass(control,ABOVE_NORMAL_PRIORITY_CLASS);
                //out<<"Change priority to ABOVE_NORMAL_PRIORITY_CLASS"<<endl;
                break;
            }
            case 4:{
                bool result = SetPriorityClass(control,REALTIME_PRIORITY_CLASS);
                //out<<"Change priority to REALTIME_PRIORITY_CLASS"<<endl;
                break;
            }
            case 5:{
                bool result = SetPriorityClass(control,HIGH_PRIORITY_CLASS);
                //out<<"Change priority to HIGH_PRIORITY_CLASS"<<endl;
                break;
            }
            case 6:{
                bool result = SetPriorityClass(control,IDLE_PRIORITY_CLASS);
                //out<<"Change priority to IDLE_PRIORITY_CLASS"<<endl;
                break;
            }
        }
    }
    return 0;
}
Добавлено через 21 минуту
Уже не нужна помощь. Нужно было в 44 строке false на TRUE заменить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2011, 01:16
Ответы с готовыми решениями:

Изменение приоритета процесса
Доброго времени суток. Хочу перевести загрузку ОС в virtual box в &quot;фоновый режим&quot; путем изменения...

Изменение приоритета скрипта
Для запуска скрипта с определенным приоритетом использую следующий код: # nice --10 ./nice-test.sh...

Изменение приоритета загрузки
Решил переустановить винду. Полез в БИОС менять приоритет загрузки, но не нашёл. Как ещё это...

Отслеживание и изменение приоритета процесса
Есть такой вопрос: программа (A.exe) по действию пользователя вызывает другую программу (B.exe) как...

0
03.04.2011, 01:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2011, 01:16
Помогаю со студенческими работами здесь

Изменение приоритета стандартного оператора
Можно ли изменить приоритет стандартного оператора * или сделать его право ассоциативным , с...

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

Изменение приоритета потока. В чем ошибка?
Вот фрагмент кода: pthread_t thread1; struct sched_param param; int policy; policy =...

Изменение информации в дочернем классе, через ссылку
Подскажите, есть класс class Class1 В конструкторе я создаю структуру, которая будет хранить...


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

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