int main(int argc,char* argv[]);
如果'\0'
中有A
个字符,它会被分成 2 个参数吗?
./programe "A"
我无法轻易复制,因为我无法将'\0'
放入 A ,但可能会有人可以。
答案 0 :(得分:9)
参数作为C字符串传递给程序;特别是,execve()
系统调用(程序可见的最低级别,通常是非常接近或与内核API相同的以太网)使用C字符串,因此无法在参数中传递\0
。请注意,虽然内核将参数向量传递到进程的地址空间的通常方式是连续的,因此嵌入式\0
确实会拆分参数,低级exec()
接口使用列表(char *)
的{{1}},因此嵌入式\0
只会提前终止参数。