popen()与sleep()调用不起作用

时间:2014-02-25 23:30:39

标签: c linux unix

我已经测试了以下代码来对字符串进行排序。

原因我添加了睡眠检查,如果排序程序将在其读取管道上等待信息排序。以下程序无需sleep()调用,为什么?

#include <stdio.h>

#define MAXSTRS 5

int main(void)
{
        int  cntr;
        FILE *pipe_fp;
        char *strings[MAXSTRS] = { "echo", "bravo", "alpha",
                                  "charlie", "delta"};

        /* Create one way pipe line with call to popen() */
        if (( pipe_fp = popen("sort", "w")) == NULL)
        {
                perror("popen");
                exit(1);
        }
        //printf("sleeping\n");
        //sleep(10);
        /* Processing loop */
        for(cntr=0; cntr<MAXSTRS; cntr++) {
                fputs(strings[cntr], pipe_fp);
                fputc('\n', pipe_fp);
        }

        /* Close the pipe */
        pclose(pipe_fp);

        return(0);
}

1 个答案:

答案 0 :(得分:0)

您可能只是在用于测试代码的网站的限制中运行。对于sleep()(例如1)的较小值,这可以正常工作。我想测试网站正在对它编译和运行的程序应用超时,以便拥有一个反应灵敏的网站。

获得一个体面的unix并在那里尝试;你可能会像我一样轻松地执行它。