我了解www_open_url/1
应启动我的默认浏览器并转到网页。但我的ubuntu计算机不这样做。如果我正常开始prolog我得到错误'无法获得引用控制台的文件描述符' 。如果我将swipl作为sudo启动它只返回true
但不启动浏览器。我想通常不使用这个谓词作为sudo。这是一个痕迹:
www_open_url('http://www.bbc.co.uk').
Call: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) current_prolog_flag(browser, _G397) ? creep
Fail: (7) current_prolog_flag(browser, _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) getenv('BROWSER', _G397) ? creep
Fail: (7) getenv('BROWSER', _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command('gnome-open') ? creep
Call: (7) www_browser:has_command('gnome-open') ? creep
Call: (8) www_browser:command_cache('gnome-open', _G397) ? creep
Exit: (8) www_browser:command_cache('gnome-open', -) ? creep
Call: (8) (-)\== (-) ? creep
Fail: (8) (-)\== (-) ? creep
Fail: (7) www_browser:has_command('gnome-open') ? creep
Redo: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command(open) ? creep
Call: (7) www_browser:has_command(open) ? creep
Call: (8) www_browser:command_cache(open, _G397) ? creep
Exit: (8) www_browser:command_cache(open, '/bin/open') ? creep
Call: (8) '/bin/open'\== (-) ? creep
Exit: (8) '/bin/open'\== (-) ? creep
Exit: (7) www_browser:has_command(open) ? creep
Call: (7) www_browser:expand_url_path('http://www.bbc.co.uk', _G397) ? creep
Call: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (7) www_browser:expand_url_path('http://www.bbc.co.uk', 'http://www.bbc.co.uk') ? creep
^ Call: (7) format(string(_G389), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
^ Exit: (7) format(string("open \"http://www.bbc.co.uk\""), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
Call: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (6) www_browser:www_open_url('http://www.bbc.co.uk')
? creep
true.
答案 0 :(得分:1)
正如您所看到的,您的prolog进行了三次往返并最终使用BROWSER
,这可能是mac用户的后备(它不是您想要在此上下文中使用的程序)。首先,它尝试从prolog环境中读取浏览器标志,然后尝试从systen环境中读取gnome-open
变量。如果这两个失败,它会查找名为$BROWSER
的程序。之后,它会查找名为open的程序。您可以通过以下方式获得正确的计划:
尝试在您开始启动的环境中设置BROWSER=<your browser command> swipl
变量。一种可能性就是启动您的Prolog:
.*shrc
您也可以在BROWSER
中进行设置以备将来使用(可能是个好主意,因为export BROWSER=<your browser command>
变量是其他程序所依赖的变量:
~/.plrc
另一种方法是尝试为prolog设置浏览器:将其放在:- set_prolog_flag(browser, 'chrome').
中的某个位置,以便为当前用户设置它,或者在prolog文件中的某个位置为当前应用程序设置它:
gnome-open
如果这些没有帮助,请尝试安装UIViewController
。
答案 1 :(得分:1)
可能错误也可能是指SWI-Prolog版本。您是否尝试安装上一个开发版本(7.1.37)?