리눅스에서 작업 제어와 관련하여 도움이 필요합니다.리눅스에서 작업 제어 - 터미널에 다시 제어권을주고 싶습니다.
나는 다음 백그라운드 프로세스로 실행되고이
$ ./test.elf &
내 프로그램/과정처럼, 터미널에서 내 프로그램을 실행합니다.
잠시 후 (예 : 5 초) 나는 fg
을 입력하여 프로세스를 포 그라운드에 배치합니다.
잠시 후 (예 : 5 초), 내 프로그램을 백그라운드 프로세스로 되돌리고 포어라운드 프로세스로 bash 프로그램을 넣어 터미널을 계속 사용할 수있게하려고합니다.
- 내 pprogram을 startng, 나는
tcgetpgrp
기능을 사용하여 전면 프로세스 (bash는 프로그램)의 그룹 프로세스 ID를 얻을 : 여기내가 할 것입니다.
- 그런 다음 프로세스가 포 그라운드 프로세스가 될 때까지 기다립니다. 나는
tcgetpgrp(STDIN__FILENO)
을 사용한다. - 그런 다음 ~ 5 초 기다려주십시오.
tcsetpgrp
을 사용하여 위의 1 번에서 설명한 프로세스를 포 그라운드에 넣습니다.
문제는 내 프로세스가 백그라운드에서 포어 그라운드의 bash 프로그램에 배치 된 것을 볼 수 있지만 터미널에 명령을 입력 할 수 없습니다. bash는 "돌아 오지 않는다", 그것은 여전히 기다리고 있거나 자고있다.
은 내가 Ctrl 키 눌러 알 - Z를 다음 bg
하지만 난 때문에 후 Ctrl 키 것을 사용하지 않으 - Z 내 프로세스가 정지 누르면 그 때문에 좋지 않다 "실시간"제어 응용 프로그램을 실행하고 있습니다. 따라서 프로그램을 멈추거나 일시 중지하지 않고 "즉시"터미널로 다시 전환하고 싶습니다.
내 문제에 대한 설명이 혼란 스러울 경우 죄송합니다.
의견이 있으십니까?
-
는 타자의 이해이 실행 스크립트를 시도? – mouviciel네, 그게 일어날 것입니다 : 나는 (전경에서) 내 프로그램을 테스트하고 디버깅하기 위해 전용 터미널을 사용하지만, 끝나면 내 프로그램을 멈추지 않고 CTRL-Z를 누른 다음 'disown' – joeks
터미널을 종료하면 어떻게 제어를 다시 되돌릴 수 있습니까? – mouviciel