【问题标题】:How to read the output from system() command in iOS如何在 iOS 中读取 system() 命令的输出
【发布时间】:2014-04-07 10:57:13
【问题描述】:

我正在使用下面的代码在 iOS 中获取 URL 的 tcpdump 输出,但它正在控制台中打印,我怎样才能获得对 NSString 对象的响应?

system("tcpdump -i en1 -A -vvv host www.facebook.com");

【问题讨论】:

    标签: ios ios5 command-line system tcpdump


    【解决方案1】:

    我认为 tcpdump 有输出文件参数,或者你可以使用输出重定向,然后从保存的文件中读取所有内容

    tcpdump -l -i en0 -A -vvv host www.facebook.com  > /tmp/facebook_packets.txt
    

    tmp路径为例,随便用吧

    编辑:

    另一种方法,将输出重定向到NSPipe,请在此处查看答案How to get the log from system();?

    【讨论】:

    • NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentsDirectory = [paths objectAtIndex:0]; [[NSFileManager defaultManager]createFileAtPath:[documentsDirectory stringByAppendingString:@"/output.txt"] 内容:nil 属性:nil]; NSString *strCmd=[NSString stringWithFormat:@"tcpdump -i en1 -vvv -A 主机 www.facebook.com > /%@",[documentsDirectory stringByAppendingString:@"/output.txt"]];系统([strCmd UTF8String]);
    • 我尝试了上面的代码,但是文件没有在该位置创建,我该如何解决这个问题?
    • 我看到你错过了-l flag
    • 并且路径中有两个斜杠//output.txt
    • 尝试/usr/sbin/tcpdump 或搜索以获得可执行文件的真实路径
    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2011-10-17
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2012-06-30
    相关资源
    最近更新 更多