当您运行驻留在相对于您正在使用的计算机的网络路径上的可执行文件时,例如\\networkmachine\folder\target.exe arg1 arg2
,我知道它是在本地执行的,但有人知道命令行参数是否结束越过网络连接?
答案 0 :(得分:0)
当然没有。开始考虑如何在本地机器中执行位于网络位置的二进制文件。当你执行命令时,负责命令执行的immideate任务(在Linux shell中,在windows中我不知道是什么)接受你输入的整个命令,因为它的参数解析它以理解它是执行一个指令可执行文件,第一个参数是可执行文件的名称,下一个参数是要传递给它的参数。然后它尝试开始执行,在Linux中它执行fork()
然后exec()
。基本上,尝试在内存中加载可执行文件,然后在开始执行之前保持参数。要将可执行文件加载到内存,它必须读取可执行文件,这是它将尝试读取可执行文件的时间,这正是它将执行网络操作(在您的情况下)或磁盘读取操作的时间,如果它在磁盘中。如果它在Linux和NFS类型的网络托管文件中,当加载程序执行常规文件读取时,网络操作将再次向下移动一层,并且NFS层执行必要的网络操作以使数据可用。这个序列中没有必要通过网络发送参数。
因此,总而言之,参数永远不会通过网络发送。