LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1308|回复: 7

有没有办法从window id获得相应程序的pid

[复制链接]
发表于 2006-10-15 22:56:53 | 显示全部楼层 |阅读模式
google了一下, 似乎是一个很麻烦的问题.
发表于 2006-10-23 16:06:58 | 显示全部楼层
说的明白一点。最好有例子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-23 16:34:27 | 显示全部楼层
window id 是每个图形窗口唯一的识别,
pid 是每个进程唯一的识别.
对有图形界面的窗口它的win id应该跟它的pid是相对应的,
xkill杀一个图形窗口它相应的process会被结束,
kill 杀一个有图形窗口的进程, 它的图形窗口就会消失.

问题是
怎么知道某个进程是管哪个窗口的, 或者某个窗口是哪个进程管的.

这样说够清楚了吧??
回复 支持 反对

使用道具 举报

发表于 2006-10-23 21:56:13 | 显示全部楼层
似乎有困难,别忘了X是跨网络的,设想一个远程程序在你的X服务器上显示了一个窗口,他的pid对你还有意义么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-24 00:25:24 | 显示全部楼层
这确实是个问题, 这两个本来就不是一个层面的东西.

但其实, 他的pid还是有意义的,
程序总不会不明不白连上了, 比如程序挂了, 我可以连回主机kill了它

我觉得以后窗口可能会把这些信息附加上去吧, 呵呵.
回复 支持 反对

使用道具 举报

发表于 2006-10-24 02:15:51 | 显示全部楼层
  1. ps auxef | grep gnome-terminal
  2. yongjian 28695  0.1  1.6  17464  8416 pts/1    S+   Oct20   7:17  |   \_ irssi -n i3d SSH_AGENT_PID=16228 SHELL=/usr/bin/
  3. zsh HISTSIZE=10000 HISTFILESIZE=5000 USER=yongjian GSM_NO_GRAB_SERVER=1 SSH_AUTH_SOCK=/tmp/ssh-lwbWS16117/agent.16117 PAT
  4. H=/usr/sbin:/usr/local/sbin:/sbin:/opt/e17/bin:/opt/e17/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  5. :/usr/bin/X11:/usr/games DESKTOP_SESSION=xfce4 GDM_XSERVER_LOCATION=local PWD=/home/yongjian XMODIFIERS=@im=fcitx LANG=en
  6. _US.UTF-8 GDMSESSION=xfce4 SHLVL=2 HOME=/home/yongjian LANGUAGE=en_US:en_GB:en:zh_CN G_FILENAME_ENCODING=@UTF-8 LOGNAME=y
  7. ongjian LC_CTYPE=zh_CN.UTF-8 DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ff7x4Aw5rt,guid=adc3374597e471e62605fbbdf6d
  8. edf00 XDG_DATA_DIRS=/etc/xdg/xubuntu:/usr/share:/usr/local/share:/usr/share DISPLAY=:0.0 GTK_IM_MODULE=fcitx XAUTHORITY=/
  9. home/yongjian/.Xauthority _=/usr/bin/irssi SESSION_MANAGER=local/ubuntumoblie:/tmp/.ICE-unix/16261 TERM=xterm COLORTERM=
  10. gnome-terminal [b][color="Red"]WINDOWID=23068820[/color][/b] OLDPWD=/home/yongjian EDITOR=vi
复制代码
See that env variable...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-4 23:06:09 | 显示全部楼层
你这个不对, 看到的是它的父进程的windowid, 而不是它自己的.
回复 支持 反对

使用道具 举报

发表于 2006-11-6 14:46:21 | 显示全部楼层
terminal下的程序继承了虚拟终端的windowid,比如我上面的例子。所以都一样。只是如果不是终端程序,就麻烦了。Xclient直接通过socket和X server连接,pid和windowid中间的联系似乎都藏在了socket中,而不是环境变量里。比如点击打开,或是远程连接X服务器。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表