Linux管道
把一个进程链接到另一个进程的数据流称为
管道
。
-
头文件
#include<unistd.h>;
-
功能
创建一无名管道原型,int pipe(int fd[2]);
-
参数fd
文件描述符数组,其中fd[0]表示读端,fd[1]表示写端; -
返回值
成功返回0,失败返回错误代码。
通常用fork()函数共享管道
子进程拷贝父进程,也拷贝了管道信息,所以父子进程共享管道。
应用场景
Linux系统交互过滤有效信息,在终端输入ip addr
之后会出现很多ip地址但是会掺杂一些无用的信息,我们要截取信息,获得想要的ip。
下面这个方法,判断终端过滤到的IP是不是floatIP,如果是就返回true,否则返回false。
void Grep(char *floatIP)
{
char command[128] = {0};
snprintf(command, 128, "ip addr |grep 'inet %s' | awk '{print $2}'", floatIP);
FILE *fp = NULL;
fp = popen(command, "r");
if(!fp)
{
pclose(fp);
return false;
}
char buffer[1024] = {0};
if(fgets(buffer, 1024, fp))
{
pclose(fp);
return true;
}
pclose(fp);
return false;
}
同一网段相邻电脑文件拷贝
应用场景
将本机10.1.1.186
中的文件拷贝到隔壁电脑10.1.1.2
中,文件名为filename
。
Linux指令
scp filename root @10.1.1.2:/opt