【问题标题】:How to fseek() on a pipe如何在管道上 fseek()
【发布时间】:2013-10-04 17:17:26
【问题描述】:

我正在尝试为 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 有什么限制吗? 提前致谢。

【问题讨论】:

  • 正确缩进你的代码。
  • popen(cmd, "r");,这是什么?
  • @hacks 这是一个函数调用。
  • 这个问题似乎跑题了,因为它不可读。
  • 你不能这样做也可以参考stackoverflow.com/questions/5975170/…

标签: c linux


【解决方案1】:

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

【讨论】:

  • 感谢您的输入,我认为输出是文件而不是管道。
猜你喜欢
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2016-02-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多