Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Процессы и потоки


Автор: UnicornDream 16.9.2010, 15:12
Помогите написать поргамму.
Разработать приложение, при запуске принимающее из командной строки два числовых параметра. Первый задают PID уже запущенного процесса. Второй задает время в сек, по истечении которого приложение должно принудительно завершить работу указанного процесса. 

Автор: vnf 17.9.2010, 20:17
Язык? ОС?

Автор: Cheloveck 17.9.2010, 21:40
Для UNIX так
Код

#include <signal.h>
#include <unistd.h>
#include <iostream>
#include <cstdlib>

int main(int argc, char ** argv)
{
    if(argc < 3)
    {
        std::cerr << "Too few arguments\n";
        return 1;
    }

    pid_t dpid = atoi(argv[1]);
    int sleep_time = atoi(argv[2]);

    sleep(sleep_time);
    
    if(kill(dpid, SIGKILL) == -1)
    {
        std::cerr << "Cannot send signal\n";
        return 1;
    }

    return 0;
}

Автор: UnicornDream 19.9.2010, 08:57
язык С++, ОС Windows

Автор: Cheloveck 19.9.2010, 12:53
для Windows так
Код

#include <windows.h>
#include <iostream>

int main(int argc, char ** argv)
{
    if(argc < 3)
    {
        std::cerr << "Too few arguments\n";
        return 1;
    }

    DWORD dpid = atoi(argv[1]);
    DWORD sleep_time = atoi(argv[2]);

    Sleep(sleep_time * 1000);
    
    HANDLE hproc = OpenProcess(PROCESS_TERMINATE, FALSE, dpid);
    if(NULL == hproc)
    {
        std::cerr << "Cannot open process\n";
        return 1;
    }
        
    if(!TerminateProcess(hproc, 0))
    {
        std::cerr << "Cannot terminate process\n";
        CloseHandle(hproc);
        return 1;
    }

    CloseHandle(hproc);
    return 0;
}


Автор: UnicornDream 20.9.2010, 08:51
спасибо, работает!  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)