실행 중인 애플리케이션을 백그라운드에서 실행되도록 변경

실행 중인 애플리케이션을 백그라운드에서 실행되도록 변경

저는 Linux에서 실행되는 C 언어로 이 애플리케이션을 개발 중입니다. 처음에는 잘 작동합니다.

~$ ./myApp

사용자가 특정 단계를 확인해야 하기 때문에 이렇게 합니다.

하지만 확인한 후에는 사용자가 다른 프로세스를 실행할 수 있도록 백그라운드에서 실행하고 싶습니다. 하지만 처음부터 백그라운드에서 앱을 실행하면.

~$ ./myApp &

시스템은 키보드 스트로크를 myApp 질문에 대한 답변으로 처리하지 않습니다.

중요한 경우 코드의 일부는 다음과 같습니다.

while (flag)
{
  pressedKey = getchar();
  switch(pressedKey)
  {
    //some code
  }
}

Linux나 C에서 이를 수행할 수 있는 방법이 있습니까?

미리 감사드립니다

답변1

Linux에서는 Ctrl-Z를 실행하여 프로그램을 중지하고 a를 실행하여 bg백그라운드에서 계속 실행될 수 있습니다. 그래서 그것은:

~$ ./myApp
  press the any-key
  press ^Z
~$ bg

C에서는 일반적으로 다음과 같은 것을 데몬화합니다.

while (flag)
{
  pressedKey = getchar();
  switch(pressedKey)
  {
    //some code
  }
}
process_id = fork();
if (process_id < 0) {
    exit(1);
}
if (process_id > 0) {
    exit(0);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
do_the_stuff_in_the_background();

관련 정보