gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:31:42 25 4
gpt4 key购买 nike

好的,我有两个程序,一个使用另一个程序的可执行文件调用另一个程序。我在 Ubuntu 终端上运行它

这是文件夹结构

.../src/pgm1/pgm1.../src/pgm0/pgm0

pgm1 和 pgm0 是可执行文件。

这就是我调用其他可执行文件的方式

<p></p>

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 yRes 400 xRes 400 inFile tmp_output/sph0.0000.sc > tmp_output/sph0.0000.ppm

因此,如果我从命令行运行此命令,它运行良好。

如果我使用系统调用运行它,它会挂起并且无法解析输入文件 sph0.0000.sc我尝试添加完整路径(因此路径变量向上)

但仍然没有运气。

任何想法为什么这会从命令行工作而不是从另一个可执行文件中的系统调用...

为了清楚起见,它可以从文件夹 pgm1 中的命令行运行。

谢谢

最佳答案

您正在使用 >,这对许多 shell 来说意味着什么,但我怀疑对 system 来说不是。试试这个:

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);

让我们知道进展如何。

关于c++ - 系统调用不像在命令行中那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com