백그라운드 프로세스가 실행되고 있지 않습니까?

백그라운드 프로세스가 실행되고 있지 않습니까?

터미널에서 무한 while 루프를 사용하여 C 프로그램을 실행했는데 CPU 코어 중 하나가 100% 사용량에 도달한 것을 관찰했습니다. +를 사용하여 Ctrl백그라운드 프로세스로 전환 하면 zCPU 사용량이 갑자기 10% 미만으로 떨어집니다. 를 사용하여 htop프로세스가 CPU를 0% 사용하고 있음을 발견했습니다. 그 과정에서 무슨 일이 일어났나요?

프로그램

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

프로그램에 I/O가 포함되지 않기 때문에 I/O 대기 사용량이 증가했는지 확인하기 위해 프로그램을 약간 변경했지만 동일한 결과(사용률 0%)를 얻었습니다.

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

그 과정에서 무슨 일이 일어났나요? 달리기?

답변1

터미널에서 Ctrl+를 누르면 zSIGTSTP가 포그라운드에서 실행 중인 작업의 프로세스 그룹으로 전송됩니다.

SIGSTP의 기본 작업은 프로세스를 중지(즉, 일시 중지)하는 것입니다.

     18    SIGTSTP      stop process         stop signal generated from keyboard

프로세스가 백그라운드에서 다시 실행되도록 하려면 shell-builtin bg(백그라운드의 약자)을 사용할 수 있습니다. 프로세스가 포그라운드에서 다시 실행되도록 하려면 이 fg명령을 사용할 수 있습니다.

관련 정보