Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 系统调用不像在命令行中那样工作_C++_Unix_System Calls - Fatal编程技术网

C++ 系统调用不像在命令行中那样工作

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.

我有两个程序,一个使用另一个的可执行文件调用另一个。 我正在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.%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);