4.1.3 进程的命令行

来源:互联网 发布:牛津西方哲学史 知乎 编辑:程序博客网 时间:2024/05/09 07:45
4.1.3 进程的命令行
当一个新进程创建时,它要传递一个命令行。该命令行几乎永远不会是空的,至少用于创
建新进程的可执行文件的名字是命令行上的第一个标记。但是在后面介绍C r e a t e P r o c e s s函数时
我们将会看到,进程能够接收由单个字符组成的命令行,即字符串结尾处的零。当C运行期的
启动代码开始运行的时候,它要检索进程的命令行,跳过可执行文件的名字,并将指向命令行
其余部分的指针传递给Wi n M a i n的p s z C m d L i n e参数。
值得注意的是, p s z C m d L i n e参数总是指向一个A N S I字符串。但是,如果将Wi n M a i n改为
50计计第二部分编程的具体方法
下载
w Wi n M a i n,就能够访问进程的U n i c o d e版本命令行。
应用程序可以按照它选择的方法来分析和转换命令行字符串。实际上可以写入p s z C m d L i n e
参数指向的内存缓存,但是在任何情况下都不应该写到缓存的外面去。我总是将它视为只读缓
存。如果我想修改命令行,首先我要将命令行拷贝到应用程序的本地缓存中,然后再修改本地
缓存。
也可以获得一个指向进程的完整命令行的指针,方法是调用G e t C o m m a n d L i n e函数:
该函数返回一个指向包含完整命令行的缓存的指针,该命令行包括执行文件的完整路径
名。
许多应用程序常常拥有转换成它的各个标记的命令行。使用全局性_ _ a rg c(或_ _ w a rg v)
变量,应用程序就能访问命令行的各个组成部分。下面这个函数C o m m a n d L i n e To A rg v W将
U n i c o d e字符串分割成它的各个标记:
正如该函数名的结尾处的W所暗示的那样,该函数只存在于U n i c o d e版本中(W是英文单
词‘Wi d e’的缩写)。第一个参数p s z C m d L i n e指向一个命令行字符串。这通常是较早时调用
G e t C o m m a n d L i n e W而返回的值。P N u m A rg s参数是个整数地址,该整数被设置为命令行中的参
数的数目。C o m m a n d L i n e To A rg v W将地址返回给一个U n i c o d e字符串指针的数组。
C o m m a n e L i n e To A rg v W负责在内部分配内存。大多数应用程序不释放该内存,它们在进程
运行终止时依靠操作系统来释放内存。这是完全可行的。但是如果想要自己来释放内存,正确
的方法是像下面这样调用H e a p F r e e函数:
原创粉丝点击