일부 그래픽 엔진을 사용하여 gtk 창 (Opencv/highgui)을 처리하는 C 및 C++ 응용 프로그램을 작성 중입니다. 이 응용 프로그램은 stdout/cout에 약간의 작은 출력을합니다.응용 프로그램에서 콘솔 열기
Windows에서 바탕 화면에서 이러한 유형의 응용 프로그램을 시작하면 자동으로 콘솔이 열리고 사용자에게 표준 출력에 "printf()"또는 "std :: cout"으로 작성된 내용이 표시됩니다.
Linux에서 이전에 열었던 콘솔에서 시작하면 문제가 없습니다. 하지만 바탕 화면 (두 번 클릭)을 통해 시작하면 linux가 관련 콘솔을 열지 않고 stdout/cout에 기록 된 데이터가 손실됩니다. 이것은 Linux (?)에서의 정상적인 동작으로 보입니다.
리눅스 플랫폼에서 컴파일 할 때 내 앱에서 자동으로 콘솔을 열고 싶습니다.
이것은 속량이 this one 인 것처럼 보입니다. 요점은 작동하지 않습니다. 나는 현재 다음과 같은 코드를 가지고 :
#ifndef __WIN32
filebuf* console = new filebuf();
console->open("/dev/tty", ios::out);
if(!console->is_open())
cerr << "Can't open console" << endl;
else
cout.ios::rdbuf(console);
#endif
내가 점점 계속 "하지 열 수 콘솔"(cerr은 freopen을()를 사용하여 파일에 리디렉션). 콘솔 이름을 바꾸려고 시도했습니다.
console->open("/dev/console", ios::out);
그러나 변경되지 않았습니다.
나는 올바른 방향으로 가고 있습니까? 다음에 무엇을 시도 할 수 있습니까? 특별히 터미널 애플리케이션 (xterm)을 열어 볼까요? 그렇다면 어떻게하면 내 콘솔과 콘솔을 연결할 수 있을까요?
음 ..특정 데스크탑 환경 (최소한 GNOME)에서는 바탕 화면에 실행 프로그램 ("Windows 바로 가기")을 만들고 해당 응용 프로그램에서 시작된 응용 프로그램을 관련 터미널과 함께 실행하도록 지정할 수 있음을 알고 있습니다. 시도하려는 경우 새 실행 프로그램을 만든 다음 해당 실행 프로그램의 속성을 검사하십시오. 여기서 해당 옵션을 찾을 수 있습니다. 이것이 당신이 원하는 것인지 확실하지 않습니다. – Jonatan
@kebs 그래픽 환경 (예 : gnome 터미널)에서 터미널에서 앱을 실행하면 터미널에 대한 출력과 앱이 열리는 창을 볼 수 있습니다. – ShinTakezou
@fullhack : 예, 알고 있습니다. 그러나이 경우 옵션이 아닙니다. – kebs