저는 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();