我已经测试了以下代码来对字符串进行排序。
原因我添加了睡眠检查,如果排序程序将在其读取管道上等待信息排序。以下程序无需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);
}
答案 0 :(得分:0)
您可能只是在用于测试代码的网站的限制中运行。对于sleep()
(例如1)的较小值,这可以正常工作。我想测试网站正在对它编译和运行的程序应用超时,以便拥有一个反应灵敏的网站。
获得一个体面的unix并在那里尝试;你可能会像我一样轻松地执行它。