int main(int argc,char* argv[]);
如果A
中有一个'\0'
字符,它会被拆分成2个参数吗?
./programe "A"
我不能轻易重现它,因为我不能将 '\0'
放入 A,但也许有人可以。
最佳答案
参数作为 C 字符串传递给程序;特别是,execve()
系统调用(程序可见的最低级别,通常非常接近或等同于内核 API)使用 C 字符串,因此不可能传递 \0
在参数中。请注意,虽然内核将参数 vector 传递到进程地址空间的通常方式是连续的,因此嵌入式 \0
确实会拆分参数,但低级 exec( )
接口(interface)使用 (char *)
列表,因此嵌入的 \0
会提前终止参数。
关于c - 命令行输入 '\0'字符怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560779/