我正在尝试为popen的输出动态分配内存,但是试图找到文件的长度给出了“非法搜索”错误。代码是
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
char cmd[40] = {0};
char * c;
int byteCount = 0;
FILE * pFp = NULL;
strncpy(cmd, "ls -l", sizeof(cmd));
pFp = popen(cmd, "r");
if (pFp == NULL)
printf ("file is null");
fseek(pFp, 0, SEEK_END);
byteCount = ftell(pFp);
perror("seek ");
fclose(pFp);
}
fgets工作正常,使用fseek和popen有什么限制吗? 提前谢谢。
答案 0 :(得分:13)
是的,你不能从管道向后寻求,只能向前。计算机中的管道就像现实生活中的管道一样,数据只在一个方向上流动,而且你无法改变流量。