마지막으로 사용한 창 (현재 창 아래의 스태킹 순서)을 닫으려고합니다. 불행히도 XQueryTree는 어떤 이유로 segfaults.XQueryTree에서 분할 오류가 발생했습니다.
#pragma once
#include <X11/Xlib.h>
#include <X11/Xutil.h>
namespace WindowingOperations {
inline void closeLastWindow() {
Display* dpy = XOpenDisplay(0);
Window root = DefaultRootWindow(dpy);
Window* root_return;
Window* parent_return;
Window** children_return;
unsigned int* nchildren_return;
XQueryTree(dpy,
root,
root_return,
parent_return,
children_return,
nchildren_return);
// Kill the window right after this one
if (*nchildren_return > 1)
XDestroyWindow(dpy, *children_return[*nchildren_return - 2]);
}
}
편집 :
#include "window_operations.h"
int main() {
WindowingOperations::closeLastWindow();
return 0;
}
내가 심각하게 의심의 여지 당신이 여기에 노출하는 것은 [MCVE 제공 ] 심지어 모든 태그로 꾸며져 있습니다. –
이 말은 상당히 간결합니다. 그것이 작동하는지 아닌지를 체크하는 것은 또한 사소한 일입니다 - 단지 closeLastWindow()를 호출하십시오 – AnimatedRNG
Nope! 테스트 케이스를 제공 할 차례입니다. 그냥 어떻게 든 그것을 재현하게하지 마라. 이미 디버거에서 해당 코드를 실행 했습니까? –