4

我正在尝试为 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 一起使用是否有任何限制?提前致谢。

4

1 回答 1

16

是的,您不能从管道向后寻找,只能向前寻找。计算机中的管道就像现实生活中的管道一样,数据只向一个方向流动,你无法改变流动。

于 2013-10-04T17:19:38.720 回答