相关疑难解决方法(0)

Python子进程模块不会在segfault上返回stdout

我正在从Python运行C可执行文件,这个可执行文件有时会出现段错误.当它发生段错误时,子进程模块不会在stdout或stderr中返回任何内容.

示例代码:

import subprocess

proc = subprocess.Popen(['./a.out'], stdin=subprocess.PIPE,
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
print 'out: "%s"' % out
print 'err: "%s"' % err
print proc.returncode
Run Code Online (Sandbox Code Playgroud)

来源a.out是:

int main() {
    printf("hello world\n");
    int x = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)

输出./a.out是:

hello world
Floating point exception
Run Code Online (Sandbox Code Playgroud)

Python代码的输出是(在Linux中,python 2.7):

out: ""
err: ""
-8
Run Code Online (Sandbox Code Playgroud)

有没有办法获得可执行文件的输出,即使它崩溃了?

将返回码转换为字符串消息的通用方法也很不错.

python subprocess segmentation-fault

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

Selenium 与 Firefox webdriver 导致错误:服务 geckodriver 意外退出。状态代码是:-11

我一直在为此绞尽脑汁。我收到错误:

系统 geckodriver 意外退出。状态代码:-11。

我使用的是共享托管 Web 服务器的 Linux 服务器。我在虚拟环境中设置了所有内容。

  • Linux 服务器 - CentOS,版本:7.4.1708
  • 硒版本 3.141.0
  • 壁虎驱动程序版本 0.23.0
  • 火狐 60.3.0
  • Python 3.6.2 并且不能使用更新的版本

Python、Selenium 和 Geckodriver 驻留在 Linux Web 服务器上的虚拟环境中。Firefox 驻留在虚拟环境之外

export PATH=$PATH:/path/to/geckodriver
Run Code Online (Sandbox Code Playgroud)

到我的终端以在PATH环境变量中使用 geckodriver 。

下面是我的代码:

#!/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/python

# -*- coding: UTF-8 -*-
import cgitb
import cgi
from selenium import webdriver
from selenium.webdriver import FirefoxOptions

cgitb.enable()
print ("Content-Type: text/html; charset=utf-8\n\n")
path = r'/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/geckodriver'
binary = FirefoxBinary(r'/usr/lib64/firefox')

opts = FirefoxOptions()
opts.add_argument("--headless")

browser = webdriver.Firefox(firefox_options=opts, firefox_binary=binary, executable_path=path)
rowser.get("http://google.com/")
print ("Headless Firefox …
Run Code Online (Sandbox Code Playgroud)

python selenium geckodriver

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