- 论坛徽章:
- 0
|
这个是我发在前面贴子里的:
各位,我按照昨天的提示,打开文件时设置同步标志,然后加上了缓冲设置,如下:
void * bk_thread(void *)
{
int fd;
FILE * fp;
char linebuf[BUFLEN + 1];
fd = open("a.out", O_CREAT | O_RDWR | O_SYNC); /* a.out 作为保存输出信息的文件, */
/*************设置为行缓冲*******************/
fp = fdopen(fd, "w+");
setvbuf(fp, linebuf, _IOLBF, BUFLEN);
/*****************************************/
dup2(fd, 1)
if(0 == fork())
{
system("tar ... >&1"); /* 故意加 >&1 到输出,实际上到a.out文件 */
exit(1);
}
int fd_dup;
int count;
fd_dup = dup(fd); /* 后面用fd_dup来操作 */
while((count = read()) >= 0) /* 这里count一直=0,除非system()返回,那个时候数据才被写道文件a.out中 */
{
if(count == 0) /* 数据为0,判断子进城是否结束,结束就退出,没结束sleep一下后继续去读 */
{
}
else /* 处理读出来的数据 */
{
}
}
}
现在还是读不出来数据啊? |
|