C++ 系统调用不像在命令行中那样工作
我有两个程序,一个使用另一个的可执行文件调用另一个。 我正在Ubuntu终端上运行它 这是文件夹结构 …/src/pgm1/pgm1 …/src/pgm0/pgm0 pgm1和pgm0是可执行文件 这就是我如何调用另一个可执行文件的方法C++ 系统调用不像在命令行中那样工作,c++,unix,system-calls,C++,Unix,System Calls,我有两个程序,一个使用另一个的可执行文件调用另一个。 我正在Ubuntu终端上运行它 这是文件夹结构 …/src/pgm1/pgm1 …/src/pgm0/pgm0 pgm1和pgm0是可执行文件 这就是我如何调用另一个可执行文件的方法 char cmd[1000]; 字符串路径=“/home/usr/src/”; //为每个实例调用pgm0。。。 sprintf(cmd,“../pgm0/pgm0 xRes 400 xRes 400填充tmp_输出/%s.%04d.sc>tmp_输出/%s.
char cmd[1000];
字符串路径=“/home/usr/src/”;
//为每个实例调用pgm0。。。
sprintf(cmd,“../pgm0/pgm0 xRes 400 xRes 400填充tmp_输出/%s.%04d.sc>tmp_输出/%s.%04d.ppm”,g_outFile.c_str(),ti,g_outFile.c_str(),ti);
cout您使用的是
,这对许多shell都有意义,但我怀疑不是系统
。试试这个:
snprintf( cmd, sizeof cmd,
"/usr/bin/bash -c '../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);
让我们知道这是怎么回事。听起来像是一个路径问题。什么是字符串路径=。。。因为在源头?也许你想先在那里chdir?字符串路径有到可执行文件所在文件夹的绝对路径。。。我在那里添加它是为了尝试使用/home/../src/pgm0,而不是../pgm0,但是我从sprintf中删除了它,以便更简单地读取运行此编译程序的pwd是pgm0 dir的同级目录,而当前目录有tmp_输出子目录?
snprintf( cmd, sizeof cmd,
"/usr/bin/bash -c '../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);