bbqsql运行不了解决方案(原创)

认识kali工具的时候,看到了bbqsql。据说是烤肉barbecue的意思。看图片(icon)也确实像。本着吃货的第一要义,当然先从这里入手。
具体怎么用还不会。但是,点击图标的时候,尴尬的一幕发生了:bbqsql运行不了解决方案(原创)_第1张图片
上图报错显示找不到#扣肉#(coros)这个好吃的了。于是从网上找啊找,找啊找,我的×扣肉×在哪里?
遍历gevent所有文件,也没有扣肉。

没图我说个j8

bbqsql运行不了解决方案(原创)_第2张图片

这不行,这会儿正饿着肚子呢,我的扣肉,快出来!
于是请教了大神,一个女的大神,我们俩一起研究,最终。。。
bbqsql运行不了解决方案(原创)_第3张图片
我们一起研究了什么呢?
bbqsql运行不了解决方案(原创)_第4张图片
bbqsql运行不了解决方案(原创)_第5张图片
bbqsql运行不了解决方案(原创)_第6张图片

以下是我们的灵感:

一、Semaphore对象

1. 基本介绍

        Semaphore 是最古老的同步原语之一,由荷兰计算机科学家 Edsger W. Dijkstra 发明。(他最早使用名为 P() 和 V() 的函数对应 acquire() 和 release())
    Semaphore 在内部管理着一个计数器。调用 acquire() 会使这个计数器 -1,release() 则是+1.计数器的值永远不会小于 0,当计数器到 0 时,再调用 acquire() 就会阻塞,直到其他线程来调用release()
    Semaphore 也支持上下文管理协议

class threading.Semaphore(value=1)

acquire(blocking=True,timeout=None)

    本方法用于获取 Semaphore
    当使用默认参数调用本方法时:如果内部计数器的值大于零,将之减一,并返回;如果等于零,则阻塞,并等待其他线程调用 release() 方法以使计数器为正。这个过程有严格的互锁机制控制,以保证如果有多条线程正在等待解锁,release() 调用只会唤醒其中一条线程。唤醒哪一条是随机的。本方法返回 True,或无限阻塞
    如果 blocking=False,则不阻塞,但若获取失败的话,返回 False
    当设定了 timeout 参数时,最多阻塞 timeout 秒,如果超时,返回 False

对头,

将扣肉那一行注释,重新导入threading 的就好了。
折腾了一上午,改了两行代码,终于又能愉快的一起吃烤肉了

只需要改两行代码就能完成的工作,被我哇啦哇啦比比了大半天,是不是心里很不爽呢?没事的,就喜欢你看不惯我又打不到我样子~
bbqsql运行不了解决方案(原创)_第7张图片

你可能感兴趣的:(Kali)