Вот вариант использования для понимания wget -O
.
для загрузки одного файла
wget http://machineintellect.cn/testfile.zip
эта команда загрузит файл и назовет его testfile.zip
, что следует за последним/
, но если вы используете wget
непосредственно в URL-адресе, подобном этому
wget http://machineintellect.cn/download?id=1
загруженный файл будет называться как download.aspx?id=1080
, а это не то, что вам нужно.
поэтому вы можете использовать -O
, чтобы указать имя целевого локального файла,вот так
wget -O target-local.zip http://machineintellect.cn/download.aspx?id=1080
эта команда даст вам файл с именем target -local.zip
Вам не нужно вызывать XCloseDisplay после XUnmapWindow. Если это не сработает, значит, в вашей программе есть какая-то другая ошибка, которая может испортить какую-то переменную?
Вот пример, который я попробовал быстро. Он отменяет отображение и отображает окно, и между ними не требуется XCloseDisplay/XOpenDisplay.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <X11/Xlib.h>
int main (int argc, char *argv[])
{
Display *display;
Window window;
XSetWindowAttributes attributes;
XGCValues gr_values;
XFontStruct *fontinfo;
GC gr_context;
Visual *visual;
int depth;
int screen;
XEvent event;
XColor color, dummy;
display = XOpenDisplay (NULL);
screen = DefaultScreen (display);
visual = DefaultVisual (display,screen);
depth = DefaultDepth (display,screen);
attributes.background_pixel = XWhitePixel (display,screen);
window = XCreateWindow (display, XRootWindow (display, screen), 200, 200, 350, 200, 5, depth, InputOutput, visual, CWBackPixel, &attributes);
XSelectInput (display, window, ExposureMask | KeyPressMask) ;
fontinfo = XLoadQueryFont (display, "6x10");
XAllocNamedColor (display, DefaultColormap (display, screen), "red", &color, &dummy);
gr_values.font = fontinfo->fid;
gr_values.foreground = color.pixel;
gr_context = XCreateGC (display, window, GCFont + GCForeground, &gr_values);
XFlush (display);
XMapWindow (display, window);
XFlush (display);
int keypressed = 0;
while (!keypressed) {
XNextEvent (display, &event);
switch (event.type) {
case Expose:
XDrawLine (display, window, gr_context, 0, 0, 100, 100);
XDrawString (display, window, gr_context, 100, 100, "hello1", 6);
break;
case KeyPress:
keypressed = 1;
XUnmapWindow (display, window);
XFlush (display);
break;
}
}
sleep (1);
XMapWindow (display, window);
XFlush (display);
while (1) {
XNextEvent (display, &event);
switch (event.type) {
case Expose:
XDrawLine (display, window, gr_context, 50, 50, 100, 100);
XDrawString (display, window, gr_context, 50, 50, "hello2", 6);
break;
case KeyPress:
XCloseDisplay (display);
exit (0);
}
}
}
Программа ждет, пока вы не нажмете клавишу. Затем он отключается и снова сопоставляется. При следующем нажатии клавиши он выходит. Скомпилируйте его с
gcc -o programname programname.c -lX11
Образец взят отсюда:http://www-h.eng.cam.ac.uk/help/tpl/graphics/X/X11R5/node21.html