小编Sim*_*mon的帖子

从更大的二进制文件中搜索一个大的二进制值

正如标题所暗示的,我想为一个二进制字符串 grep 一个相当大(大约 100MB)的二进制文件 - 这个二进制字符串不到 5K。

我已经尝试使用 -P 选项 grep ,但这似乎只在模式只有几个字节时返回匹配项 - 当我增加到大约 100 个字节时,它不再找到任何匹配项。

我也试过bgrep。这最初工作得很好,但是,当我需要将模式扩展到我现在拥有的长度时,我只会收到“无效/空搜索字符串”错误。

具有讽刺意味的是,在 Windows 中,我可以使用 HxD 来搜索文件并在一个实例中找到它。不过,我真正需要的是 Linux 命令行工具。

谢谢你的帮助,

西蒙

linux binary search command-line grep

5
推荐指数
1
解决办法
2333
查看次数

使用python twisted框架连接到多个串行套接字

我目前使用twisted来连接到我拥有的串行设备,使用如下代码.

from twisted.internet import reactor
SerialPort(Handler(), "/dev/ttyACM1", reactor, baudrate='9600')
reactor.run()
Run Code Online (Sandbox Code Playgroud)

但是,我知道需要扩展应用程序以监视添加(和删除)的新串行设备.我目前使用pyinotify来寻找添加/删除的新设备,这看起来效果很好.

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_CREATE(self, event):
        ... connect to serial device
        ...
Run Code Online (Sandbox Code Playgroud)

目前我似乎有几个问题.我认为最大的问题是我对Twisted知之甚少,不知道这样做的"正确"方法是什么.

目前正如我所知,pyinotify事件处理程序在一个单独的线程中启动,这意味着反应堆没有在主线程中运行.这是一个问题吗?

连接第一个设备后,我很难添加第二个设备 - 尤其是在第二个设备添加时,反应堆已经在运行.即使我用一个保护它

if not reactor.running: 
Run Code Online (Sandbox Code Playgroud)

第二个连接没有正确添加到反应器(至少connectionMade,dataReceived接收方法不会触发).

如果我首先启动反应器,然后让pyinotify事件尝试并添加到正在运行的反应器,这似乎也不起作用 - 设备连接,但dataReceived方法永远不会被调用.

基本上,我确信有一个简洁的方法让这个工作,我只是无法通过谷歌或反复试验找到它.任何人都可以向我建议我如何才能使这个工作?

提前感谢您提供的任何帮助,

西蒙

python serial-port twisted

3
推荐指数
1
解决办法
1445
查看次数

python twisted INotify不阻塞反应器

我正在使用twsited的INotify监视/ dev目录以监视正在添加的新串行设备.我目前使用的代码类似于下面的代码.

notifier = INotify()
notifier.watch(FilePath("/dev"), IN_CREATE, callbacks=[self.created])
notifier.startReading()

def created(self, ignored, path, mask):
    ...
    blocking code
    ...
Run Code Online (Sandbox Code Playgroud)

我现在遇到的问题是当'created'被调用时,它阻塞了我的反应器,所以其他网络会话(我有同一个反应器的TCP和UDP连接)必须等待'created'方法完.

有谁知道如何让"创建"方法在后台运行,所以它不会阻止我的反应堆?

谢谢,

西蒙

python twisted inotify blocking

1
推荐指数
1
解决办法
1662
查看次数

标签 统计

python ×2

twisted ×2

binary ×1

blocking ×1

command-line ×1

grep ×1

inotify ×1

linux ×1

search ×1

serial-port ×1