Important: Please read the Qt Code of Conduct -

Running .exe file using QProcess creates hundreds of the same processes

  • I have a problem running phantomjs.exe binary in my QProcess class. Consider this code:

    @QString program = "phantomjs.exe";
    QProcess *process = new QProcess(this);
    process->start(program, QStringList() << "test.js");@

    test.js file:

    @var page = require('webpage').create();'', function (status) {
    if (status !== 'success') {
    console.log('Unable to access network');
    } else {
    var ua = page.evaluate(function () {
    return document.getElementById('viewport')[removed];});

    When I start the app main process loads up and nothing happens after that, just hundreds of other phantomjs.exe are created (checking it in TaskManager) as well as conhost.exe processes.

    I tried other exe files, like notepad.exe, and it works just fine. Notepad window appears.

    Did you encounter this problem? Please advice.

  • This is not correct:
    if (status !== 'success') { // line 4!
    // should be:
    if (status != 'success')
    In this case, you check if the status != (status = success) so, no this comparison will never be valid!

  • Thanks for your reply, but still no luck after changing the code like you said. I think there's something with the binary I run, I'll try to rund bash script to run it, we'll see what's going to happen.

  • Ok, Good luck!
    If running a batch, it could be possible that there multiple times the process gets started.

  • Solution I mentioned before doesn't work either. But when I run custom executable of phantomjs instead of my application everything works fine, really strange.

    Maybe you can suggest some other ways of using phantomjs in Qt? As I checked there's no way to build dynamic library out of source.

Log in to reply