2015-04-09 8 views
0

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

Так что я сделал создаюсь на структуру печатных плат (блок управления технологического процесса), и когда у меня есть этот процесс запущенный я установить

mypcb->status = RUN //RUN would just be defined as 0, SUSPEND as 1, etc 

В принципе у меня есть функция, которая управляет всеми моими процессами, и я мог бы есть в этом что-то вроде функции

startprocess(processnum); 
wait 10 seconds 
killprocess(processnum); 

Так тогда в моей функции startprocess я называю вилкой и в детском процессе (когда вилка() == 0), я хочу, чтобы этот процесс, протекающий на неопределенный срок. Я знаю, что это, вероятно, можно сделать с помощью execvp, но я не хочу переключать контекст на другой exe-файл, я просто хочу, чтобы процесс работал, или, по крайней мере, сделать так, чтобы дочерний процесс все еще был жив, так что я может вернуться и вызвать SIGINT на pid в моей функции killprocess.

Обратите внимание, что я храню ИДП каждого процесса в

mypcb->pid 

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

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

Спасибо!

+0

'while (1) {}'? – immibis

ответ

0

Похоже, все, что вы пытаетесь сделать, это сделать пробег процесс навсегда, ничего не делая, в частности (и в этом случае остальная часть вопроса не имеет значения).

Вы можете просто использовать что-то вроде:

while(1) 
{ 
    /* no code in between the {} */ 
} 

, который не будет делать ничего, навсегда.

+0

Ух ты, я не знаю, что я думал, спасибо много –

+1

на самом деле, чтобы избежать процесса являются центральным процессором ресурса боров, интерьер что в то время цикл, вероятно, следует сделать вызов USleep() или nanosleep() – user3629249