iwlist 在使用 execl 调用时尝试扫描所有接口



我正在我的Ubuntu PC上以C++进行标准的fork/execl扫描Wi-Fi SSID。 使用 excel 调用时,接口名称似乎未生效。

execl( "/sbin/iwlist", "wlp4s0", "scanning", (char*) NULL );

这成功了,但我在标准中得到了这个:

lo 接口不支持扫描。

enp0s25 接口不支持扫描。

看起来 iwlist 正在尝试扫描所有接口。

相反,如果我这样做:

system( "/sbin/iwlist wlp4s0 scanning" );

我在标准中没有收到这些消息。

我在执行电话中做错了什么吗?

通了。

在 bash 中,你总是写一些类似的东西

命令 arg1 arg2 ...

当程序"command"解析其参数时,第一个参数(argv[0](是"command"。

但是,当您使用 execl 调用"命令"时,如下所示:

execl( "/path/to/command", "arg1", "arg2", (char*) NULL );

它得到的第一个参数是'arg1'。如果命令期望将其作为 argv[1] 并改为将其作为 argv[0],这显然不起作用。

这就解释了为什么命令忽略了我的"wlp4s0"ifname。 它只是忽略了它期望为命令名称/路径的第一个参数。

所以我最初问题的解决方案是这样的:

execl( "/sbin/iwlist", "iwlist", "wlp4s0", "scanning", (char*) NULL );

相关内容

  • 没有找到相关文章

最新更新