Используйте execv & ptrace для запуска python-программы selenium-webdriver в linux - PullRequest
0 голосов
/ 30 ноября 2018

Я написал программу на C ниже, которая использовала execv для запуска команды оболочки и ptrace для ее трассировки.

    pid = fork();
    if (pid == 0) {
        // child process
        ptrace(PTRACE_TRACEME, 0, NULL, NULL);
        char** argv = new char*[3];
        argv[0] = "/usr/bin/python3.6";
        argv[1] = "pythoncode.py";
        argv[2] = NULL;
        execv(argv[0], argv);
    } else
    {
        // parent process
        pid_t p = wait4(-1, &stat, __WALL, &rusage_);
        ...
    }

Она может работать правильно, когда я использую ее для запуска нормального кода Python.Но сегодня я написал код на Python ниже

    from selenium import webdriver
    browser = webdriver.Chrome()
    # do something
    browser.close()

. Я могу успешно запустить его в оболочке или без ptrace, но когда я использовал execv и ptrace одновременно, это всегда дает мнесигнал остановки и код сигнала были SIGILL (незаконная инструкция).Кто-нибудь знает почему и как это решить?

...