2016-11-28 5 views
0

Qt5.6을 사용하고 있습니다. 응용 프로그램을 다시 시작하는 코드가 있지만 인스턴스 수를 제한하고 싶습니다.인스턴스를 1로 제한하면서 Qt를 다시 시작하는 응용 프로그램

인스턴스를 제한하는 코드가 작동하고 응용 프로그램을 다시 시작하는 코드도 작동하지만 제한 코드가 활성화되어 있으면 응용 프로그램이 다시 시작되지 않고 종료되지만 다음과 같이 인해 다시 시작이 차단되고 있음을 짐작할 수 있습니다. 새 인스턴스를 시작하려고 할 때 원래의 PID가 지워지지 않았습니다.

질문입니다, 응용 프로그램을 닫은 결과를 얻는 방법, 인스턴스의 총 수를 1로 제한 하시겠습니까?

내일까지 해결되지 않은 경우 인스턴스를 다시 시작하고 제한하기위한 코드를 게시 할 예정이며 현재 나와 함께 사용하지 않습니다.

qApp->quit(); 
    QProcess::startDetached(qApp->arguments()[0], qApp->arguments()); 
+0

예약 된 작업 또는 chron 작업을 사용하여 앱 다시 시작을 처리 할 수 ​​있습니다. – MrEricSir

+0

응용 프로그램 내에서 재시작을 관리해야합니다. 감사합니다. – SPlatten

+0

한 가지 해결책은 앱을 다시 시작할 때 스크립트를 호출하는 것입니다. 스크립트는 현재 PID를 모니터링하고 앱이 종료되면 앱을 다시 시작합니다. 그렇지 않으면 실제로 종료/시작하지 않고 앱을 재설정 할 수 있습니다. 어쨌든 왜 필요합니까? 예 : 처음에 읽을 필요가있는 특정 설정이있는 경우 다시 시작하지 않고 설정을 다시로드 해보십시오. – HazemGomaa

답변

1

이는 단지 감시 스크립트 힌트 :

당신이 QProcess를 사용할 필요가

1 : 스크립트가 전에 응용 프로그램을 종료 실행 startDetached

코드는 응용 프로그램을 다시 시작합니다. 이렇게하면 앱을 종료 한 후 스크립트 프로세스가 실행됩니다.

QProcess::startDetached("bash", QStringList() << "-c" << terminalCommand); 

2 - 당신은 Qt는에 현재 앱 PID를 얻을 수 귀하의 감시 스크립트

3

qApp->applicationPid(); 
를 사용 terminalCommand

를 통해 감시 스크립트에 현재 앱 PID를 전달해야 수행함으로써 PID를 검사하는 무한 루프가 있음

ps aux | grep -v 'grep' | grep $PID 

PID i s가 사망하면 워치 독 스크립트에서 앱을 다시 시작하십시오.

+0

내일 시스템에 접속 해 주셔서 감사합니다. – SPlatten