我试着呼吁程序(ncbi爆炸,对于那些需要知道的)从我的代码,通过呼叫中的命令一系统()call.

如果我执行的串直接在外壳,它可以作为目的,但如果我尝试同样的串通过系统(),该程序的返回速度更快,而不预期的结果。输出的文件被创建,但该文件的尺寸为0。返回的错误代码也为0。我甚至试图追加">输出。日志2>错误。日志",但这些文件没有创建。

我猜这已经是与环境变量或路径...

输出的文件名是通过给予-o命令行参数,而不出重新定向。

我读一些有关的popen命令可能更适合我的使用情况,但我不能找到它,其图书馆是?

有帮助吗?

解决方案

此类问题的最常见原因是〜/ .bashrc 中的环境变量设置不正确。

您应该能够通过执行

来查看 ncbi 不满意的内容
$SHELL -c '<exact string you pass to system()>'

另一种调试方法是使用 strace 。执行:

strace -fo /tmp/strace.out ./myProgram

并查看 /tmp/strace.out 中的线索。

其他提示

您是否有任何理由不想 fork exec ?这是从另一个进程执行一个进程的常用习惯用法。

popen在标准C库中 参见手册页

一些简单的问题:

  • 你如何执行在在的壳?
  • 你怎么在系统中执行命令?
  • 有什么价值返回的系统?

精确复制和粘贴从你终是优选的那一英文说明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top