题
我试着呼吁程序(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库中 参见手册页
一些简单的问题:
- 你如何执行在在的壳?
- 你怎么在系统中执行命令?
- 有什么价值返回的系统?
精确复制和粘贴从你终是优选的那一英文说明。
不隶属于 StackOverflow