Ruby系统命令给了我一个输出

时间:2012-11-29 08:50:27

标签: ruby multithreading shell stdout

这个红宝石'系统'给了我一个输出;在irb:

system("sudo airodump-ng -w sidney wlan0")

Airodump-ng来自Airocrack-ng软件包。

然而,红宝石“系统”不应该给我一个标准。 问题是,正在创建一个“sh”进程,它没有输出。但是“sh”进程有一个子进程,它给了我一个我根本不想在我的终端上显示的输出。

问题的第二部分,我怎样才能获得该子进程的pid,使用线程以及使用ruby调用shell命令的不同方式(并且不显示该子进程的输出)?

2 个答案:

答案 0 :(得分:2)

如果您不关心输出,请将其删除:

system("sudo airodump-ng -w sidney wlan0 >/dev/null 2>&1")

认为子进程将继承父进程的文件描述符。

答案 1 :(得分:1)

使用

out = `sudo airodump-ng -w sidney wlan0`
相反,输出不会显示在屏幕上,而是存储在out