如何确定popen流的大小?

2024-02-21

我想确定 popen() 函数调用返回的流大小。我尝试使用 fseek 和 ftell 但它返回的大小为 -1。谁能建议我如何确定文件大小?以下是我正在使用的代码......

   char return_val[256];
FILE *fp = NULL;
char line[256];
memset (return_val, 0, 256);
/* set the defalut value */
strncpy (return_val, "N/A", 4);
char cmd[] = "if [ -f /etc/version ]; then cut -d, -f1 -s /etc/version ; fi";

/* Open the command for reading. */
fp = popen(cmd, "r");
if (fp != NULL) 
{
    /* read the line from file */
    fgets (line, 256, fp);
    if( line != NULL)
    {
            /* copy the data */
            strncpy(return_val, line, strnlen (line, 256)); 
        }
      /* close the file */ 
    pclose (fp);
}

你不能。 popen 为您提供了一个管道,一个 FIFO 先进先出流。角色从一侧进入,从另一侧出来。管道的本质是您事先不知道将传输多少字节。

您可以求助于带内信令,即有多少字节,或者您自己实现缓冲和动态分配。

在管道上也不可能进行查找,因为它只是这些进程之间的一种“门户”。你知道,就像游戏“传送门”/“传送门2”一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定popen流的大小? 的相关文章

随机推荐