Hello everyone,
I have a problem that I thought somebody here might be able to help me with:
I have an external program which writes some data to file. I want to invoke it from within a Mathematica function and then import the data from file.I have made the following minimal working example:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[]) {
ofstream myfile;
myfile.open ("example.txt");
myfile << argv[1];
myfile.close();
return 0;
}
I compile it and run it from Mathematica using the following code:
directory = StringReplace[FileNameDrop[NotebookDirectory[], 3], " " -> "*"]
command = StringJoin["./", directory, "/test"]
argument = "hello"
Run[command, argument]
This returns 0 to Mathematica and writes the word "hello" to file.The result is equivalent to running the command "./test hello" from the command line, except that the output file is written to my home directory rather than the current directory.
Next I try the same with the program that I actually need to use:
directory = StringReplace[FileNameDrop[NotebookDirectory[], 3], " " -> "*"]
command = StringJoin["./", directory, "/triangle"]
argument = "-pQIeq20Aa0.0025 model.poly"
Run[command, argument]
This should be equivalent to running "./triangle -pQIeq20Aa0.0025 model.poly" from the command line, but I get error message 256 and the program produce no output.
What could be the problem? Is my system somehow denying Mathematica permission to execute the program?I run Mathematica 9 in Mountain Lion.
I would appreciate any help!
Best regards,
Andreas