Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 413
Записей в блоге: 2
Завершенные тесты: 1
#1

завершение старого процесса - C++

28.03.2011, 21:02. Просмотров 391. Ответов 3
Метки нет (Все метки)

Как можно выполнить завершение одного процесса, при открытии другого?
Допустим завершения програамы при
C++
1
2
_spawnl(_P_WAIT,".\\discovery.exe","discovery.exe", ".\\date.ini", NULL);   
exit(0);
ведь программа не закроется пока не закроется просесс "discovery.exe"
Как можно это обойти?

Добавлено через 8 часов 33 минуты
может эту тему в другой раздел перенести или все-таки кто знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2011, 21:02     завершение старого процесса
Посмотрите здесь:

завершение родительского процесса из дочернего C++
Как преобразовать массив создав новый из старого с изменениями?! C++
C++ Завершение потока
C++ завершение программы
C++ Завершение процесса функцией ExitProcess
C++ Завершение потока
C++ Почему при программировании C++/Win32 создаются элементы старого вида?
C++ Перенос старого проекта с VS2003 на VS2013
C++ Получить новый массив из старого удалив элементы с заданным значением
Как изменить операторы ввода-вывода для старого компилятора C++
C++ Завершение программы
C++ Сформировать новый массив из старого, добавляя дополнительные элементы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bobrovskii
57 / 57 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.03.2011, 21:35     завершение старого процесса #2
VASSUV,
_P_OVERLAY
Overlays calling process with new process, destroying the calling process (same effect as _exec calls).
_P_WAIT
Suspends calling thread until execution of new process is complete (synchronous _spawn).
_P_NOWAIT or _P_NOWAITO
Continues to execute calling process concurrently with new process (asynchronous _spawn).
_P_DETACH
Continues to execute the calling process; new process is run in the background with no access to the console or keyboard. Calls to _cwait against the new process will fail (asynchronous _spawn).
это читал? если правельно понял то тебе надо _P_OVERLAY или _P_NOWAIT
Роман-1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 2
09.11.2013, 01:08     завершение старого процесса #3
Доброго времени суток.
После закрытия окна процесс видно в диспетчере. Почему не удаляется, что делаю не так?

#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
#pragma comment(lib, "Ws2_32.lib")
#define WSA_VER 514

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

//---переменные---//
HINSTANCE hInstance;
HWND hWnd;
SOCKET soket;
SOCKET soket_new;
//------End------//

int May_Coket_Thead()
{
//-------------------------сокет-------------------------//

//--структуры--//
WSAData wsadata;
sockaddr_in addr;
//-----End-----//

if(WSAStartup(WSA_VER, &wsadata) != 0)
{
WSACleanup();
MessageBox(NULL, L"WSAStartup error", L"!", MB_OK);
return 0;
}

SOCKET soket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(soket == INVALID_SOCKET)
{
WSACleanup();
MessageBox(NULL, L"SOCKET error", L"!", MB_OK);
return 0;
}

addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(7777);

if(bind(soket, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) != 0)
{
WSACleanup();
MessageBox(NULL,L"bind error",L"",MB_OK);
return 0;
}
while(listen(soket, 5) == 0)
{
soket_new = accept(soket, NULL, NULL);
if(soket_new != INVALID_SOCKET)
{
MessageBox(NULL,L"1",L"!!!",MB_OK);
}
}
//-------------------------End-------------------------//
return 0;
}

int CALLBACK WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//--структуры--//
MSG msg;
WNDCLASSEX st;
//-----End-----//

st.cbSize = sizeof(WNDCLASSEX);
st.style = CS_HREDRAW | CS_VREDRAW;
st.lpfnWndProc = WndProc;
st.cbClsExtra = NULL;
st.cbWndExtra = NULL;
st.hInstance = hInstance;
st.hIcon = NULL;
st.hCursor = LoadCursor(NULL, IDC_ARROW);
st.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
st.lpszMenuName = NULL;
st.lpszClassName = L"Windows";
st.hIconSm = NULL;

if(RegisterClassEx(&st) == 0)
{
MessageBox(NULL, L"RegisterClassEx error", L"!", MB_OK);
return 0;
}

HWND hWnd = CreateWindow(L"Windows",
L"Server", WS_OVERLAPPEDWINDOW,
0, 0, 200, 200,
NULL, NULL,
hInstance,
NULL);
//--------------------------------Поток---------------------------------//
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)May_Coket_Thead, 0, 0, 0);
//----------------------------------End-----------------------------------//

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

while(GetMessage(&msg, hWnd, NULL, NULL) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
WSACleanup();
closesocket(soket);
PostQuitMessage(WM_QUIT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}

return 0L;
}
Роман-1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 2
10.11.2013, 12:16     завершение старого процесса #4
Разобрался. Дело было в параметре GetMessage(); вместо hWnd нужно NULL.
Yandex
Объявления
10.11.2013, 12:16     завершение старого процесса
Ответ Создать тему
Опции темы

Текущее время: 00:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru