Есть такой код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <unistd.h>
#include <getopt.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <X11/Xmu/WinUtil.h>
static struct option long_opts[] =
{
{"id", required_argument, NULL, 'i'},
{0, 0, 0, 0}
};
static const char * opt_str = "i:";
int main (int argc, char **argv)
{
Window window_id = 0;
int lindex;
int opt = getopt_long( argc, argv, opt_str, long_opts, &lindex);
while( -1 != opt )
{
switch( opt )
{
case 'i':
//window_id = strtoul(optarg, NULL, 0);
sscanf(optarg, "0x%lx", &window_id);
break;
default:
break;
}
opt = getopt_long( argc, argv, opt_str, long_opts, &lindex);
}
Display * dpy = XOpenDisplay(NULL);
if(!dpy)
{
fprintf(stderr, "unable to connect to display\n");
return 1;
}
//int screen_num = DefaultScreen(dpy);
//Window root = RootWindow(dpy, screen_num);
//window_id = XmuClientWindow(dpy, window_id);
XUnmapWindow(dpy, window_id);
//XActivateScreenSaver(dpy);
printf("%d\n", window_id);
return 0;
}
Компиляция проходит тихо, без ошибок, предупреждений и шума:
gcc -g -lX11 -lXmu main.c
> ./a.out --id='0x400181'
4194689
Подскажите, пожалуйста, что я делаю не так.