예제 #1
0
impl::stream_redirect_fd::stream_redirect_fd(const int fd)
{
    atf_error_t err = atf_process_stream_init_redirect_fd(&m_sb, fd);
    if (atf_is_error(err))
        throw_atf_error(err);
    m_inited = true;
}
예제 #2
0
파일: process_test.c 프로젝트: 274914765/C
ATF_TC_BODY (stream_init_redirect_fd, tc)
{
    atf_process_stream_t sb;

    RE (atf_process_stream_init_redirect_fd (&sb, 1));

    ATF_CHECK_EQ (atf_process_stream_type (&sb), atf_process_stream_type_redirect_fd);

    atf_process_stream_fini (&sb);
}
예제 #3
0
파일: process_test.c 프로젝트: 274914765/C
static void redirect_fd_stream_init (void *v)
{
    struct redirect_fd_stream *s = v;

    switch (s->m_base.m_type)
    {
        case stdout_type:
            s->m_fd = open ("stdout", O_WRONLY | O_CREAT | O_TRUNC, 0644);
            break;
        case stderr_type:
            s->m_fd = open ("stderr", O_WRONLY | O_CREAT | O_TRUNC, 0644);
            break;
        default:
            UNREACHABLE;
    }
    ATF_REQUIRE (s->m_fd != -1);

    s->m_base.m_sb_ptr = &s->m_base.m_sb;
    RE (atf_process_stream_init_redirect_fd (&s->m_base.m_sb, s->m_fd));
}