0
好吧我有两个程序,一个使用另一个可执行文件调用另一个。 我的Ubuntu终端系统调用不起作用,如命令行
上运行它这是在地方文件夹结构
.../src目录/ PGM1/PGM1 .../src目录/ pgm0/pgm0
PGM1和pgm0是可执行文件。
这是我如何调用其他可执行
char cmd[1000];
string path = "/home/usr/src/";
// call pgm0 for each instance...
sprintf(cmd, "../pgm0/pgm0 xRes 400 xRes 400 inFile tmp_output/%s.%04d.sc > tmp_output/%s.%04d.ppm", g_outFile.c_str(), ti, g_outFile.c_str(), ti);
cout << cmd << endl;
system (cmd);
....
我看了看,并正确生成的CMD: ../pgm0/pgm0 Y残余物400 XRES 400 INFILE tmp_output/sph0.0000.sc> tmp_output/sph0.0000.ppm
所以如果我从命令行运行这个命令,它工作得很好。
如果我运行使用系统调用它它挂起和失败来解析输入文件sph0.0000.sc 我尝试添加完整路径(因此路径变量上)
但仍没有运气。
任何想法,为什么会在命令行这项工作,而不是从其它可执行文件中的系统调用...
只是要清楚它的命令行工作在文件夹PGM1。
感谢
听起来像一个路径问题。什么是字符串路径= ...在源中?也许你想先在那里找到? – ataylor
字符串路径对于文件夹中可执行文件... 我加它那里尝试与 /home/.../src/pgm0代替../pgm0 但我删除它的sprintf,使其更简单绝对路径阅读 – grobartn
你的pwd是从哪里运行这个编译的程序pgm0 dir的同级目录,而你的当前目录有tmp_output子目录? –