C 如何在管道上查找()

C 如何在管道上查找(),c,linux,C,Linux,我试图为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(

我试图为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);
}
#包括
#包括
#包括
void main()
{
char cmd[40]={0};
char*c;
int字节数=0;
FILE*pFp=NULL;
strncpy(cmd,“ls-l”,sizeof(cmd));
pFp=popen(cmd,“r”);
如果(pFp==NULL)
printf(“文件为空”);
fseek(pFp,0,SEEK_END);
字节数=ftell(pFp);
佩罗(“寻求”);
fclose(pFp);
}
fgets工作正常,将fseek与popen一起使用有任何限制吗?
提前感谢。

是的,你不能从管道中向后搜索,只能向前搜索。计算机中的管道就像现实生活中的管道,数据只朝一个方向流动,你不能改变流动。

正确缩进代码。
popen(cmd,“r”),这是什么?@haccks这是一个函数调用。这个问题似乎离题了,因为它不可读。你不能这样做。谢谢你的输入,我认为输出是一个文件而不是管道。