[英]How can I acces files with getenv() in c++ with using pipe in a bash?
我想为 MapReduce 框架实现 function,所以我的任务是创建一个连接文本文件的映射器。
这是我的 bash 脚本;
for i in text1.txt text2.txt text3.txt
do
cat $i | ./myfunction
done
myfunction() 将逐行读取输入文件,变量将使用 function getenv() 读取。 我尝试使用 fopen(argv[1],"r") 它给了我分段错误并且使用 popen() 我被拒绝了权限。
我在 C++ 中的代码:
char *myenv;
myenv = getenv("PWD");
FILE *fileIN = popen(myenv , "r");
我不知道 cat $i |./myfunction 到底是做什么的。它是否像参数一样读取“i”? 如果是,我在使用 fopen 时得到 fileIN == NULL。
你在这里混淆了。 getenv
允许您获取环境变量,例如PWD
,它只是您的主目录的路径。
在这里,pipe 将echo
命令的 output 添加到提供给可执行文件的参数中。 要获得这些参数,您应该像这样编写 C++ 代码:
int main(int argc, char *argv[]) {
//do whatever you want with argv[1]
return 0;
}
编辑:如果你想在 C++ 代码中获取文件名,你应该使用echo
而不是cat
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.