品尝 GNU Prolog (4)

news/2024/5/17 18:00:27 标签: socket, callback, server, tcp, output, token

http://blog.csdn.net/lawme/archive/2008/10/18/3093692.aspx

 

七、一条大虫(bug)


用 gprolog 的 consult 运行 tictactoe.pl,OK,一切正常。


用 gplc 编译成 tictactoe.exe 后运行,oh! 程序卡死了。GTK-Server 对于用户的鼠标操作,不起反应。


问题的原因,是两端的程序联通受阻,直接肇事者是它:


    exec('gtk-server stdin post=.', Pout, Pin, _, _)


这条DOS控制台指令,使双方以STDIN方式建立的连接,造成了运行卡死的故障。


有可能这是 GNU Prolog 的一个 bug。


这个问题可以解决。方法是放弃 STDIN方式的连接,改用 TCP 方式的连接。修改后的谓词如下:


start:-
 init(Socket, In, Out),
 gui(Pin, Pout),
 callback(Pin, Pout).


init(Socket, In, Out):-
 % Start server in TCP mode
 exec('gtk-server tcp=localhost:40000', _, _, _, _),
 % Wait for the server to initialize
 sleep(1),
 % Define socket
 socket('AF_INET', Socket),
 % Try to connect
 socket_connect(Socket, 'AF_INET'(localhost, 40000), In, Out).


api(In, Out, Txt, Result):-
 % Write string to socket
 write(Out, Txt),
 % Force flush on socket
 flush_output(Out),
 % Read info
 read_token(In, Result).


替换 tictactoe.pl 相应的谓词后,编译运行 tictactoe.exe,结果正常。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lawme/archive/2008/10/18/3093692.aspx


http://www.niftyadmin.cn/n/1605329.html

相关文章

2019百度云智峰会:拉开中国AI工业化大幕

8月29日,“ABC SUMMIT 2019百度云智峰会”在北京国家会议中心举行。此次大会以“AI工业化,加速产业智能”为主题。百度副总裁、智能云事业群组总经理尹世明表示, 第四次工业革命正在中国发生,这场智能革命正在从基础建设阶段跃升到…

5G的推广应用给刷脸支付赋予了新的生命力

没有制定实行计划的项目,执行起来非常缓慢,比如做刷脸支付肯定是从一线城市再到二三线城市。商家安装刷脸支付系统相当于汇率低pos机,无缝对接系统,获取30亿补贴,能够轻松分佣赚钱,大大降低运营成本&#x…

九大领域全面迎来AI工业化,百度2019云智峰会尽显“云+AI”领先者地位

百度智能云ABC正在让AI全面走向工业化。8月29日,“ABC SUMMIT 2019百度云智峰会”在北京国家会议中心举行。百度副总裁、智能云事业群组总经理尹世明表示,2019年是AI工业化的元年,百度智能云将让产业智能化加速,让世界加速。同日&…

刷脸支付优化商品配置提高转化率

刷脸支付并不仅仅是结账收银工具,还将带动商家实现数字化经营,除用户注册成为会员外,还可以通过支付宝小程序完成会员识别、发放优惠券、核销等操作。刷脸支付并不仅仅在支付层面上,刷脸支付的“人脸识别”这一技术还可以对入店人…

边缘计算不边缘,站在5G“正中央”,边缘计算节点BEC来啦!

8月29日,“ABC SUMMIT 2019百度云智峰会”在北京国家会议中心举行。现场,百度副总裁、智能云事业群组总经理尹世明在主会场重磅发布了边缘计算节点BEC产品,与6500名客户及合作伙伴共同见证了百度智能云最新在边缘计算方向的探索成果。边缘计算…

刷脸支付购物流程更简洁体验更好

扫码支付较现金支付无需找零、无需携带钱包,只需要扫码就可以完成支付,对于商家和顾客来说,支付变得简单多了。刷脸支付在多数人看来是一种比较“高级”的支付方式,顾客需要站在一台设备面前,对准摄像头,扫…

MySQL C API

http://www.sdau.edu.cn/support/mysq_doc/manual_Clients.html#C 20 MySQL客户工具和API 20.1 MySQL C API C API代码是随MySQL分发的,它被包含在mysqlclient库且允许C程序存取一个数据库。 在 MySQL源代码分发中的很多客户是用C编写的。如果你正在寻找演示怎样…

智能化金融新范本 银联商务与百度智能云合作再升级

Fintech的浪潮席卷而来AI、大数据、云计算等技术迸发出前所未有的活力新时期下,支付企业如何把握风口在产业智能化的大势中实现向金融科技公司的华丽蜕变银联商务与百度智能云的合作是一种参考范本8月29日,“ABC SUMMIT 2019百度云智峰会”在北京国家会议…