- 論壇徽章:
- 0
|
這個(gè)是我發(fā)在前面貼子里的:
各位,我按照昨天的提示,打開文件時(shí)設(shè)置同步標(biāo)志,然后加上了緩沖設(shè)置,如下:
void * bk_thread(void *)
{
int fd;
FILE * fp;
char linebuf[BUFLEN + 1];
fd = open("a.out", O_CREAT | O_RDWR | O_SYNC); /* a.out 作為保存輸出信息的文件, */
/*************設(shè)置為行緩沖*******************/
fp = fdopen(fd, "w+");
setvbuf(fp, linebuf, _IOLBF, BUFLEN);
/*****************************************/
dup2(fd, 1)
if(0 == fork())
{
system("tar ... >&1"); /* 故意加 >&1 到輸出,實(shí)際上到a.out文件 */
exit(1);
}
int fd_dup;
int count;
fd_dup = dup(fd); /* 后面用fd_dup來操作 */
while((count = read()) >= 0) /* 這里count一直=0,除非system()返回,那個(gè)時(shí)候數(shù)據(jù)才被寫道文件a.out中 */
{
if(count == 0) /* 數(shù)據(jù)為0,判斷子進(jìn)城是否結(jié)束,結(jié)束就退出,沒結(jié)束sleep一下后繼續(xù)去讀 */
{
}
else /* 處理讀出來的數(shù)據(jù) */
{
}
}
}
現(xiàn)在還是讀不出來數(shù)據(jù)。 |
|