zoukankan      html  css  js  c++  java
  • 管道

    #include <stdio.h>

    FILE *popen(const char *command,const char *open_mode);

    int pclose(FILE *stream_to_close);

    代码
    #include <unistd.h>
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>

    int main(void)
    {
    FILE
    *write_fp;
    char buffer[BUFSIZ+1];
    sprintf(buffer,
    "Once upon a time,there was...\n");
    write_fp
    =popen("od -c","w");
    if(write_fp != NULL)
    {
    fwrite(buffer,
    sizeof(char),strlen(buffer),write_fp);
    pclose(write_fp);
    }
    return 0;
    }
    代码
    #include <unistd.h>
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>

    int main()
    {
    FILE
    *read_fp;
    char buffer[BUFSIZ+1];
    int chars_read;
    memset(buffer,
    '\0',sizeof(buffer));

    read_fp
    =popen("ps -ax","r");

    if(read_fp != NULL)
    {
    chars_read
    =fread(buffer,sizeof(char),BUFSIZ,read_fp);
    while(chars_read > 0)
    {
    buffer[chars_read
    -1]='\0';
    printf(
    "Reading:-\n%s\n",buffer);
    chars_read
    =fread(buffer,sizeof(char),BUFSIZ,read_fp);
    }
    }
    pclose(read_fp);
    return 0;
    }

    读取大量数据:

    代码
    #include <unistd.h>
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>

    int main(void)
    {
    FILE
    *fread_fp;
    char buffer[BUFSIZ+1];
    int chars_bytes;

    fread_fp
    =popen("cat popen*.c | wc -l","r");
    if(fread_fp != NULL)
    {
    chars_bytes
    =fread(buffer,sizeof(char),BUFSIZ,fread_fp);
    while(chars_bytes > 0)
    {
    buffer[chars_bytes
    -1]='\0';
    printf(
    "\n%s\n",buffer);
    chars_bytes
    =fread(buffer,sizeof(char),BUFSIZ,fread_fp);
    }
    pclose(fread_fp);
    }
    return 0;
    }

    #include <unistd.h>

    int pipe(int file_descripter[2]);

    基本使用:

    代码
    #include <unistd.h>
    #include
    <stdlib.h>
    #include
    <stdio.h>
    #include
    <string.h>

    int main(void)
    {
    int data_processed;
    int file_pipes[2];
    const char some_data[]="123";
    char buffer[BUFSIZ+1];
    memset(buffer,
    '\0',sizeof(buffer));

    if(pipe(file_pipes) == 0)
    {
    data_processed
    =write(file_pipes[1],some_data,strlen(some_data));
    printf(
    "wrote %d bytes\n",data_processed);
    data_processed
    =read(file_pipes[0],buffer,BUFSIZ);
    printf(
    "read %d bytes:%s\n",data_processed,buffer);
    }
    return 0;
    }

    利用fork调用管道:

    代码
    #include <unistd.h>
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>

    int main(void)
    {
    int file_pipes[2];
    int data_processed;
    const char some_data[]="1234";
    char buffer[BUFSIZ+1];
    pid_t fork_result;
    memset(buffer,
    '\0',sizeof(buffer));

    if(pipe(file_pipes) == 0)
    {
    fork_result
    =fork();
    if(fork_result==-1)
    {
    fprintf(stderr,
    "Fork failure");
    return 1;
    }
    if(fork_result==0)
    {
    data_processed
    =read(file_pipes[0],buffer,BUFSIZ);
    printf(
    "read %d bytes:%s\n",data_processed,buffer);
    return 1;
    }
    else
    {
    data_processed
    =write(file_pipes[1],some_data,strlen(some_data));
    printf(
    "write %d bytes\n",data_processed);
    }
    }
    return 0;
    }

  • 相关阅读:
    Linux 性能监测:CPU
    Linux 性能监测:介绍
    数据库设计
    数据库设计
    如何将Virtualbox和VMware虚拟机相互转换
    如何将Virtualbox和VMware虚拟机相互转换
    stat()获得文件信息
    stat()获得文件信息
    网游创业为什么会失败?
    网游创业为什么会失败?
  • 原文地址:https://www.cnblogs.com/linyilong3/p/1858986.html
Copyright © 2011-2022 走看看