I've compiled a command line utility that takes a file as an argument, and 
can print out a little report to stdout. It works fine for a single call.

Because I'd like the utility to work on the same file for multiple calls, 
I've tried setting 'noExitRuntime:true', and 'noInitialRun: true', which 
had seemed to have the desired effect.

However, the second time I call Module['callMain']([]);, the program errors 
out, saying the file is not a vaild file that it would expect (that's to 
say output you'd expect from the native program to stderr when the file you 
passed in was not the type it expected).

I even tried simply calling the main method twice in succession (in case 
something was going wrong with setting up the file a second time), but the 
error was the same.

I note looking through the Emscripten-generated Javascript that callMain 
allocates argv every time - should I be avoiding this as an entry point?

I'd rather not have to create a simple C main method, to compile to 
Javascript just to wrap the original main method.

(Incidentally, 'noInitialRun' is a little confusion - 'noInitialMainCall' 
would be closer so far as I understand it?)

Cut-down snippet of my worker code:

var Module = {
  noExitRuntime: true,
  noInitialRun: true,
...
}

importScripts("emscripten-compiled.js");


onmessage = function(e) {
  console.log("Run main.");
  FS.createDataFile('/', filename, e.data.romFile, true, false);

  // First call works
  Module['callMain']([filename, "print"]);

  // Second call works, but program see the file as corrupt
  Module['callMain']([filename, "print"]);
};


-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to