如何创建命令行管道? (xcode mac os x)

时间:2018-04-14 14:03:06

标签: xcode macos terminal

  

如何创建命令行管道? (xcode mac os x)你好我想   用xcode(mac os x)创建一个质量为的命令行   在" |"之后用于管道

     

我知道通过使用xargs,我们可以将存储在stdin中的参数传递给   参数。

     

我想了解如何创建一个pipable命令行。谢谢   你的答案

2 个答案:

答案 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]。