关于重定向的API

原创 2013年12月03日 14:41:43
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(void)
{
    int fd, outBak;
    // const char *str1 = "write in dup2TestFile\n";
    // const char *str2 = "write in tty\n";
    const char *str3 = "printf in dup2TestFile\n";
    const char *str4 = "printf in tty\n";

    fd = open("dup2TestFile", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
    if (-1 == fd)
    {
        printf("open dup2TestFile fail!\n");
        exit(1);
    }

    outBak = dup(STDOUT_FILENO);
    if (-1 == outBak)
    {
        printf("dup STDOUT_FILENO  fail!\n");
        exit(1);
    }

    if (dup2(fd, STDOUT_FILENO) != STDOUT_FILENO)
    {
        //printf("fd dup2 STDOUT_FILENO  fail!\n");
        write(outBak, "fd dup2 STDOUT_FILENO  fail!\n", sizeof("fd dup2 STDOUT_FILENO  fail!\n"));
        exit(1);
    }
    
    printf("%s\n", str3); // 标准IO有缓冲的,文件IO则无缓冲,而stdout默认行缓冲,普通文件则全缓冲
    fflush(stdout);

    if (dup2(outBak, STDOUT_FILENO) != STDOUT_FILENO)
    {
        //printf("outBak dup2 STDOUT_FILENO  fail!\n");
        write(outBak, "outBak dup2 STDOUT_FILENO  fail!\n", sizeof("outBak dup2 STDOUT_FILENO  fail!\n"));
        exit(1);
    }

    printf("%s\n", str4);

    return 0;
}

// 记得使用perror
// 若flcose(stdout); 则(无论何时,任何重定向到该流的文件 都)无法使用stdout进行写入,example: printf("can not be write out\n");不能输出.

 

标准IO的重定向接口有FILE* fropen(const char* path, const char* mode, FILE* fp);

文件IO的重定向接口有dup2(int fd, int copyfd);

文件流和描述符的转换,fdopen(int fd, const char* mode); fileno(FILE* fp);

HTTP请求重定向的接口,获取该接口重定向地址

正常来说,java代码发起HTTP请求到一个重定向的接口,请求的结果为接口内重定向后页面的html源码。对于这种重定向接口,查看控制台可以看到,其重定向后的地址在Response Headers中的L...

STM32F469 重定向printf到USB CDC

  • 2017年11月24日 15:45
  • 21.15MB
  • 下载

请求转发与重定向

  • 2016年05月24日 05:56
  • 244B
  • 下载

重定向与请求转发的区别及什么时候使用

重定向与请求转发的区别 一 转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部...

cgi + http + 重定向

  • 2016年05月18日 17:53
  • 23KB
  • 下载

重定向和转发的区别

  • 2014年09月04日 16:55
  • 685B
  • 下载

IIS6和IIS7做301永久重定向(附图)

IIS6 1、先在IIS里把网站正常发布,例如域名为(www.aaa.com) 2、再硬盘上建一个空文件夹 3、再到IIS里建一个网站,例如域名为(aaa.com),指向这个空文件夹,然后对这个...

输入输出重定向

  • 2014年08月31日 22:27
  • 15KB
  • 下载

页面转向与重定向

  • 2013年06月05日 15:05
  • 33KB
  • 下载

servlet的转发与重定向

转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。 1、转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于重定向的API
举报原因:
原因补充:

(最多只允许输入30个字)