如何创建命令行管道? (xcode mac os x)你好我想 用xcode(mac os x)创建一个质量为的命令行 在" |"之后用于管道
我知道通过使用xargs,我们可以将存储在stdin中的参数传递给 参数。
我想了解如何创建一个pipable命令行。谢谢 你的答案
答案 0 :(得分:0)
在objective-c或C中,简单地给出一个行命令 因使用" |"而使用ien管道接连不断 命令行,有必要重定向" stdin"进入 命令行,因为它是一个参数(" argv")。从那里 在" C"中掌握一点编程,必须到达目的地 使用xcode创建一个命令行,可以在" |"之后使用
答案 1 :(得分:0)
例如,如果我们定义应该接收的hand函数 要执行的参数。我们将以一种基本的方式写出(在C中):
int main (int argc, char ** argv)
{
char buf [512] = "";
char buf1[512] = "";
int f;
并实现一些事情
参数数组的第一个参数,无论如何都包含no 您正在创建的命令行:argv [0]" echo"和 你希望使用的参数后面的参数,'这里是echo argv [1] "阳光普照"当然,如果echo能够接收一个参数 在" |"之后(管道)例如:echo"太阳照耀着#34; |回声,但是 echo不使用管道。
对于我们的主要功能,我们将检查是否argv [1] 包含
的参数
if (argv [1] == NULL)
> {
there we arbitrarily take the guess that argv [1] is empty. as a reminder our command line is located after a pipe "|" if our argv [1]
为空,需要找到一个参数才能继续使用我们的 命令行,为此我们接受假设,如果命令 在" |"之后放置一行管道是以前的输出 命令不是空的
> f = open ("/ dev / stdin", O_RDONLY);
> read (f, buf, sizeof (buf));
memcpy (buf1, buf, sizeof (buf));
现在我们打开了流" stdin"这必然包含 在上一个命令的输出中,我们使用2个缓冲区buf [512]和buf1 [512],因为我们无法填写argv [1],现在我们已经拥有了 在缓冲区中的参数,可以实现的延续 执行命令,好像是关于argv [1]。