我知道我可以使用xdpyinfo从Linux上的命令行获得屏幕分辨率,但是也可以在C程序中这样做吗?如果是,怎么办?
最佳答案
如果xdpyinfo
对你有用,就用它。创建一些管道,fork()
,连接管道,exec(xdpyinfo)
这比计算libX11要容易很多倍;有人已经为你做了这些工作。这不是我要用的成语,但它让我明白了这一点:
int filedes[2];
if (pipe(filedes) == -1) {
perror("pipe");
exit(1);
}
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
} else if (pid == 0) {
while ((dup2(filedes[1], STDOUT_FILENO) == -1) && (errno == EINTR)) {}
close(filedes[1]);
close(filedes[0]);
execl(cmdpath, cmdname, (char*)0);
perror("execl");
_exit(1);
}
close(filedes[1]);
while(...EINTR))
循环只是为了防止在文件描述符关闭和复制期间出现中断。