网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Result Sets from Stored Proced.
.关于dbms_stats取代analyze.
.移动数据库和J2ME工具构建应用程.
.最新Redhat Linux9 quota磁盘空间.
.用SQL更新数据.
.ORACLE 应用经验(5)-表空间.
.创建和使用分区的表.
.实现类GRID报表功能的程序包.
.利用作业备份和恢复数据库.
.Oracle9i自动分段空间管理改善分.
.不让redo log日志组处于高激活状.
.ExactPapers Oracle 1Z0-001 200.
.跳跃式索引(Skip Scan Index)的浅.
.入门基础-Oracle常用脚本备忘.
.oracle 常用命令.
.Oracle数据库的转移与升级.
.Oracle 10g的安装步骤和注意事项.
.Ruby on Rails之Oracle应用.
.如何使用pipeline function获得实.
.ORACLE在HP-UX下的系列问题处理(.

全面解读 startx

发表日期:2008-2-9



  总览:
  startx 只是xinit的一个前端工具,它所做的只是设置好一些变量,资源。然后再用xinit 启动X window.
  xinit的命令格式:
  xinit [ [client] clientargs] [-- [server] [display] serverargs]
  startx所做的工作:
  一.获取命令行参数
  1.client段
  clientargs:
  完全从命令行中获取,无默认值
  client:
  假如没有指定,但是已经指定clientargs,则使用/usr/X11R6/bin/xterm
  假如没有指定,且没有指定clientargs,则使用./defaultclientargs,即按以下顺序取值:
  $HOME/.xinitrc -> /usr/X11R6/lib/X11/xinit/xinitrc
  /usr/X11R6/lib/X11/xinit/xinitrc其实就是执行/etc/X11/Xsessions这个脚本
  而/etc/X11/Xsession又会检查$HOME/.xsession,假如存在则把它作为client.
  所以假如$HOME/.xinitrc不存在时,它可以使用$HOME/.xsession;而当$HOME/.xinitrc存在
  时,它并不会使用$HOME/.xsession
  2.server段
  跟client类似
  增加一个display的设置,默认为":0"
  二.设置标志认证
  三.通过xinit启动X
  四.关闭X时,进行一些收尾工作。
  对xinit来说,假如没有指定client,则使用$HOME/.xinitrc,假如这个也不存在则使用xterm;假如没有指定server,则使用$HOME/.xserverc,假如这这个不存在的话则使用X :0。
  所以当由startx启动X时
  client的顺序是: 命令行 -> $HOME/.xinitrc -> $HOME/.xsession -> /usr/X11R6/lib/X11/xinit/xinitrc
  server的顺序是: 命令行 -> $HOME/.xserverrc -> /usr/X11R6/lib/X11/xinit/xserverrc
  以上"->"表示:当前一个不存在时,则取下面一个,直到存在。
  源码:--------------------------------------------------------------------------------
  #!/bin/sh
  # $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld EXP $
  #
  # This is just a sample implementation of a slightly less primitive
  # interface than xinit. It looks for user .xinitrc and .xserverrc
  # files, then system xinitrc and xserverrc files, else lets xinit choose
  # its default. The system xinitrc should probably do things like check
  # for .Xresources files and merge them in, startup up a window manager,
  # and pop a clock and serveral xterms.
  #
  # Site administrators are STRONGLY urged to write nicer versions.
  #
  # $XFree86: xc/programs/xinit/startx.cpp,v 3.12.2.2 2002/01/28 18:27:34 tsi Exp $
  #注重:xinit 的参数格式:
  #xinit $client $clientargs -- $server $display $serverargs
  #各个参数的特点:
  #client必须是以"/"或者"./"开头。因为client其实就是一个程序,所以他是由路径来指出
  的
  #第一个clientargs不能是以"/"或者"./"开头的。
  #对于server跟serverargs的区别也是类似的。
  #而display跟serverargs的区别
  #display是第一个以":??"(??代表两个数字)开头的字符串。
  userclientrc=$HOME/.xinitrc
  userserverrc=$HOME/.xserverrc
  sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc
  sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc
  defaultclient=/usr/X11R6/bin/xterm
  defaultserver=/usr/X11R6/bin/X
  defaultclientargs=""
  defaultserverargs=""
  clientargs=""
  serverargs=""
  #===================参数配置文件================
  if [ -f $userclientrc ]; then
   defaultclientargs=$userclientrc
  elif [ -f $sysclientrc ]; then
  defaultclientargs=$sysclientrc
  fi
  if [ -f $userserverrc ]; then
  defaultserverargs=$userserverrc
  elif [ -f $sysserverrc ]; then
  defaultserverargs=$sysserverrc
  fi
  #接收命令行参数
  whoseargs="client"
  #谁的参数--之前是client的参数,--之后是server的参数。

  while [ x"$1" != x ]; do
  case "$1" in
   # '' required to prevent cpp from treating "/*" as a C comment.
   /''*\./''*)
  #这个参数是以"/"或者"./"开头
   if [ "$whoseargs" = "client" ]; then
   if [ x"$clientargs" = x ]; then
   # 假如clientargs为空,说明这个参数是从命令行传入的第一个参数
   # 故它应该是client
   client="$1"
   else
   clientargs="$clientargs $1"
   fi
   else
   if [ x"$serverargs" = x ]; then
   #为什么这里不用display是否为空来判定呢?
   #因为display可以省略,这时则不能正确判定了。
   server="$1"
   else
   serverargs="$serverargs $1"
   fi
   fi
   ;;
   --)
   whoseargs="server"
   ;;
   *)
   if [ "$whoseargs" = "client" ]; then
   clientargs="$clientargs $1"
   else
   # display must be the FIRST server argument
   if [ x"$serverargs" = x ] && expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
  #假如serverargs为空,并且$1是以":"跟数字组成,即为display参数。
   display="$1"
   else
   serverargs="$serverargs $1"
   fi
   fi
   ;;
   esac
   shift
  done
  #命令行参数接收完毕。
  # process client arguments
  if [ x"$client" = x ]; then
   # if no client arguments either, use rc file instead
   if [ x"$clientargs" = x ]; then
  client="$defaultclientargs"
   else
   client=$defaultclient
   fi
  fi
  # process server arguments
  if [ x"$server" = x ]; then
   # if no server arguments or display either, use rc file instead
   if [ x"$serverargs" = x -a x"$display" = x ]; then
   server="$defaultserverargs"
   else
   server=$defaultserver
   fi
  fi
  if [ x"$XAUTHORITY" = x ]; then
  XAUTHORITY=$HOME/.Xauthority
   export XAUTHORITY
  fi
  removelist=
  # set up default Xauth info for this machine
  # check for GNU hostname
  if hostname --version > /dev/null 2>&1; then
   if [ -z "`hostname --version 2>&1 grep GNU`" ]; then
   hostname=`hostname -f`
   #long hostname
   fi
  fi
  
  if [ -z "$hostname" ]; then
   hostname=`hostname`
  fi
  #以上是设置hostname
  #添加X标记认证。
  authdisplay=${display:-:0}
  #设置要验证的显示,假如display已经设置则取display的值;
  #假如display没有设置,则取:0
  mcookie=`mcookie`
  for displayname in $authdisplay $hostname$authdisplay; do
   if ! xauth list "$displayname" grep "$displayname " >/dev/null 2>&1; then
   #没有xauth认证,需要添加。
   xauth add $displayname . $mcookie
   removelist="$displayname $removelist"
   fi
  done
  #启动X window
  xinit $client $clientargs -- $server $display $serverargs
  #关闭X window时
  if [ x"$removelist" != x ]; then
  #删除标记认证
   xauth remove $removelist
  fi
  #释放不用的虚拟终端所占用的资源
  if command -v deallocvt > /dev/null 2>&1; then
   deallocvt
  fi
  由于本人对X机制也不是很了解,所以错误在所难免,欢迎大家指正。

  有关xauth部分,请参阅:http://thunder.prohosting.com/~bric...1/Xsafe.htm#5.1
上一篇:stty使用方法 人气:716
下一篇:linux日志管理(一) 人气:950
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐