c - popen() 和 sleep() 调用不起作用

标签 c linux unix

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

我添加 sleep 来检查排序程序是否会在其读取管道上等待要排序的信息的原因。下面的程序无需调用 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);
}

最佳答案

您可能只是在用于测试代码的站点的限制中运行。如果 sleep() 的值较小(例如 1),则效果很好。我猜想测试站点正在对其编译和运行的程序应用超时,以便拥有一个 react 良好的网站。

找一个像样的 unix 并在那里尝试一下;您可能会像我一样执行它时遇到一些困难。

关于c - popen() 和 sleep() 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028517/

相关文章:

c++ - 如何生成格式为 HxHHHHHHHH 的 NSString,表示 Objective C、C++ 或 C 中的浮点值?

python - 带有调试器和代码完成功能的 python3 开源跨平台 IDE

c - 如何中断一个进程并稍后继续?

perl - 从 Perl 创建的文本文件是否有行长限制?

unix - 如何用dd覆盖二进制文件的某些字节?

c - 使用 iwinfo 库没有扫描结果

正确的函数输出导致 printf 中产生垃圾

java - 使用 JNI 从 C 调用 Java

linux - 使用双 SSH 的 Git

linux - 在shell中,如果文件大于100MB,如何删除文件,否则移动