如果命令行输入中有'\ 0'字符怎么办?

时间:2011-07-03 02:38:30

标签: c command-line-interface

int main(int argc,char* argv[]);

如果'\0'中有A个字符,它会被分成 2 个参数吗?

./programe "A"

我无法轻易复制,因为我无法将'\0'放入 A ,但可能会有人可以。

1 个答案:

答案 0 :(得分:9)

参数作为C字符串传递给程序;特别是,execve()系统调用(程序可见的最低级别,通常是非常接近或与内核API相同的以太网)使用C字符串,因此无法在参数中传递\0。请注意,虽然内核将参数向量传递到进程的地址空间的通常方式是连续的,因此嵌入式\0确实会拆分参数,低级exec()接口使用列表(char *)的{​​{1}},因此嵌入式\0只会提前终止参数。