создавая процесс и убивая его

Я работаю над заданием, которое требует от меня создать дочерний процесс, затем подождать 300 секунд и завершить этот процесс, в то время как родительский процесс должен быть уничтожен через 200 секунд после создания дочернего процесса. Я делаю это на C ++ в Ubuntu с помощью компилятора Clang ++. Я очень плохо знаком с C ++ и уже давно использую Java. То, что у меня сейчас есть, вероятно, больше похоже на psuedocode, чем на что-либо еще, я действительно сомневаюсь, что это работает. Когда я компилирую это, я получаю ошибки, связанные с вызовами kill (), я пробовал что-то вроде * this.kill () или this.kill (), но ни один из них не сработал. Как использовать команду kill? Кроме того, этот код выглядит так, как будто он будет делать то, что я хочу? Боюсь, это даже не близко.

#include <iostream>
#include <unistd.h>
using namespace std;

class process{

public:
process(){
main();
}void main(){
process *parent = new process();
int pid;
pid=fork();
if (pid == 0)
{
sleep(200);
kill();
}
else
{
sleep(100);
kill();
}
}
};

-1

Решение

kill Системный вызов требует пару аргументов: идентификатор процесса для процесса, чтобы убить, и конкретный сигнал. Не существует версии вызова без аргументов, например, просто убить текущий процесс.

Смотрите man-страницу для kill, вот версия руководства для Linux.

Обратите внимание, что unistd.h у вас также есть доступ к getpid call, который вы можете использовать, чтобы получить идентификатор процесса для вызывающего процесса, см. человек получает.

0

Другие решения

Ваш код структурирован как программа командной строки Java, где главной точкой входа является функция с именем main() внутри некоторого (неопределенного) класса. Программа на C ++ использует main () в качестве точки входа, однако она должна быть функцией верхнего уровня, а не методом класса.

Как правило, вы должны иметь как минимальную C ++ программу:

int main(int argc, char *argv[])
{
...
return 0;
}

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

1

kill это системный вызов для отправки сигналов процессам, вы должны указать правильный сигнал в качестве его второго параметра (первый — это идентификатор процесса принимающего процесса), например так:

kill(pid,SIGKILL);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector