加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

另一个Linux命令输出(Piped)作为我的C程序的输入

发布时间:2020-12-13 23:05:07 所属栏目:Linux 来源:网络整理
导读:我现在正在研究 Linux中的一个小型C程序.让我解释一下我想用下面的示例Linux命令做什么 ls | grep hello 上面的命令是在下面的激情中执行的(如果我错了,请告诉我) ls命令将首先执行 将输出grep命令,它将通过匹配“hello”再次生成输出 现在我想编写一个C程序
我现在正在研究 Linux中的一个小型C程序.让我解释一下我想用下面的示例Linux命令做什么

ls | grep hello

上面的命令是在下面的激情中执行的(如果我错了,请告诉我)

> ls命令将首先执行
>将输出grep命令,它将通过匹配“hello”再次生成输出

现在我想编写一个C程序,它将一个命令的管道输出作为输入.意味着,在类似的激情中,“grep”程序如何从ls命令获得输入(在上面的例子中).

其他用户here也提出了类似的问题,但由于某种原因,此主题已标记为“不是有效问题”

我最初认为我们可以将它作为C程序的命令行参数.但这种情况并非如此.

解决方法

如果将输出从一个命令传递到另一个命令,则该输出将在接收进程的标准输入(stdin)上可用.

您可以使用常用的scanf或fread函数访问它.默认情况下,scanf等在stdin上运行(默认情况下printf在stdout上运行的方式相同;在没有管道的情况下,stdin连接到终端),C标准库为fread等函数提供FILE *stdin从FILE流中读取.

POSIX还在unistd.h中提供了一个STDIN_FILENO宏,用于操作一个文件描述符的函数.这基本上总是0,但依赖于这种情况是不好的形式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读