繁体   English   中英

如何在 bash 中使用 pipe 在 c++ 中使用 getenv() 访问文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM