【发布时间】:2009-10-23 09:56:57
【问题描述】:
我尝试通过调用 system() 调用中的命令从我的代码中调用程序(ncbi blast,对于那些需要知道的人)。
如果我直接在 shell 中执行字符串,它会按预期工作,但如果我通过 system() 尝试相同的字符串,程序会更快地返回,但没有预期的结果。输出文件已创建,但文件大小为 0。返回的错误代码也为 0。我什至尝试附加 "> output.log 2> error.log" 但未创建这些文件。
我猜它与环境变量或路径有关......
输出文件名是通过 -o 命令行参数给出的,而不是输出重定向。
我读到一些关于 popen 命令可能更适合我的用例的内容,但我找不到它,它来自哪个库?
【问题讨论】:
-
尝试在 system() 调用中指定程序的完整路径?
-
如何启动父应用?
-
@moonshadow 是的,为 system() 调用指定了完整路径
-
@Bernard 在我直接尝试调用的同一 shell 中。 ".\myProgram"
-
重定向操作符只在shell环境下工作,不会通过系统影响app的行为。您确定文件不是在其他地方创建的吗?