Background O processo não está em execução?

0

Eu executei um programa em C com um loop while infinito em um terminal e observei um dos núcleos do CPU disparados para 100% de uso. Quando eu o transformo em um processo em background usando Ctrl + z , o uso da CPU caiu repentinamente para < 10%. Usando htop , descobri que o processo estava usando 0% da CPU. O que aconteceu com o processo?

O programa

int main()
{
    int i;
     while( 1 )
    { }
    return 0;
}

Como não há E / S envolvida no programa, fiz pequenas alterações no programa para ver se a espera de E / S aumentou o uso, mas obtive os mesmos resultados (0% de uso).

int main()
{
    int i;
     while( i+1 ) // wait to retrieve i
    {
        i = 1; 
    }
    return 0;
}

O que aconteceu com o processo? Está funcionando?

    
por kesari 21.09.2014 / 18:26

1 resposta

1

Quando você pressiona Ctrl + z em seu terminal, um SIGTSTP é enviado para o grupo de processos da tarefa em execução no primeiro plano.

A ação padrão do SIGSTP é parar (ou seja, suspender) o processo:

     18    SIGTSTP      stop process         stop signal generated from keyboard

Se você deseja que o processo retome a operação em segundo plano, é possível usar o bg embutido no shell (abreviação de background). Se você quiser que o processo retome a operação no primeiro plano, você pode usar o comando fg .

    
por 21.09.2014 / 18:36