Fabriqué en France Drapeau français

qprocess 예제

다음 예제에서는 gzip을 실행하여 이벤트 루프 없이 « Qt rocks! »를 압축합니다. 함수 포인터 구문을 사용하여 이 명령에 연결하려면 이 예제와 같이 정적 캐스트에서 신호 유형을 지정해야 합니다. QProcess를 사용하여 이러한 명령을 직접 실행하려고 하면 작동하지 않습니다. 한 가지 가능한 해결책은 명령 인터프리터 자체(일부 Windows 시스템에서 cmd.exe)를 실행하고 인터프리터에게 원하는 명령을 실행하도록 요청하는 것입니다. 다음 예제에서는 CreateProcess에 사용자 지정 플래그를 전달 하는 방법을 보여 줍니다. 콘솔 프로세스 A에서 콘솔 프로세스 B를 시작할 때 QProcess는 기본적으로 프로세스 B에 대한 프로세스 A의 콘솔 창을 다시 사용합니다. 이 예제에서는 자식 프로세스 B에 대해 사용자 지정 색 구성표가 있는 새 콘솔 창이 만들어집니다. Windows에서 따옴표를 이스케이프하고 따옴표로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따로 따 예를 들어 위의 코드는 « 내 문서 »가 dir 실행 에 대한 인수로 사용되도록 하기 위해 다음과 같은 방법으로 지정됩니다: 명령 문자열의 리터럴 따옴표는 삼중 따옴표로 표시됩니다. 예를 들어 명령은 프로그램 이름과 인수를 모두 포함하는 단일 텍스트 문자열입니다.

인수는 하나 이상의 공백으로 구분됩니다. 예를 들어 공백을 포함하는 인수를 새 프로세스에 올바르게 제공하려면 인용해야 합니다. 예를 들어 위의 예에서 프로세스를 연결할 수 있습니다Exited() 신호를 슬롯 UicManager::readFromStdout() 대신에 연결할 수 있습니다. 이렇게 하면 슬롯이 호출될 때 모든 데이터를 사용할 수 있는지 확인합니다. 반면에 처리를 수행하기 전에 프로세스가 완료될 때까지 기다려야 합니다. QProcess는 인수 대체를 수행하지 않습니다. 예를 들어 « * » 또는 « $DISPLAY »를 지정하면 이러한 값이 프로세스에 문자 그대로 전달됩니다. 셸에서 제공하는 것과 동일한 동작을 수행하려면 직접 대체작업을 수행해야 합니다. 즉, « * »를 지정하는 대신 현재 디렉터리에서 모든 파일 이름 목록을 지정해야 하며 « $DISPLAY » 대신 환경 변수 DISPLAY의 값을 지정해야 합니다. 예를 들어 다음 코드 스니펫은 « -style » 및 « fusion »이 포함된 문자열을 인수 목록의 두 항목으로 전달하여 X11 플랫폼의 Fusion 스타일에서 아날로그 클럭 예제를 실행합니다. 채널이 닫히기 전까지 데이터를 수집합니다. 예를 들어 프로그램 « more »는 유닉스와 Windows 모두에서 콘솔에 텍스트 데이터를 표시하는 데 사용됩니다.

그러나 QProcess의 쓰기 채널이 닫혀있을 때까지 텍스트 데이터가 표시되지 않습니다. 예: 프로그램 문자열에 따옴표를 포함하여 공백을 포함하는 인수가 새 프로세스에 올바르게 제공되도록 할 수도 있습니다. 예를 들어, uic 명령(Qt Designer와 함께 사용되는 Qt 명령줄 도구)을 시작하고 출력에서 일부 작업을 수행한다고 가정합니다(uic은 기본적으로 표준 출력으로 생성되는 코드를 출력합니다). « -tr i18n »이라는 명령줄 옵션으로 « small_dialog.ui » 파일에서 프로그램을 실행하려는 경우를 가정해 보겠습니다. 명령줄에 우리는 쓸 것 : http://doc.trolltech.com/qprocess.html http://www.trolltech.com/faq/tech.html . 데이터 buf는 문자열의 QString::local8Bit() 표현을 사용하여 writeToStdin() 표준 입력에 기록됩니다. QProcess 개체는 즉시 시작 상태로 들어갑니다. 프로세스가 성공적으로 시작되면 QProcess는 시작() 내보를 내보올 것입니다. 그렇지 않으면 error()가 내보내집니다. QProcess 개체가 이미 프로세스를 실행 중인 경우 콘솔에서 경고가 인쇄될 수 있으며 기존 프로세스가 계속 실행됩니다. setWorkingDirectory()로 설정된 작업 디렉토리 또는 명시적으로 설정되지 않은 경우 현재 디렉터리로 반환합니다.

MENU