另一个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命令将首先执行 现在我想编写一个C程序,它将一个命令的管道输出作为输入.意味着,在类似的激情中,“grep”程序如何从ls命令获得输入(在上面的例子中). 其他用户here也提出了类似的问题,但由于某种原因,此主题已标记为“不是有效问题” 我最初认为我们可以将它作为C程序的命令行参数.但这种情况并非如此. 解决方法
如果将输出从一个命令传递到另一个命令,则该输出将在接收进程的标准输入(stdin)上可用.
您可以使用常用的scanf或fread函数访问它.默认情况下,scanf等在stdin上运行(默认情况下printf在stdout上运行的方式相同;在没有管道的情况下,stdin连接到终端),C标准库为fread等函数提供 POSIX还在unistd.h中提供了一个STDIN_FILENO宏,用于操作一个文件描述符的函数.这基本上总是0,但依赖于这种情况是不好的形式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |