【问题标题】:How to read string including escape characters in C using popen() in Linux?如何在 Linux 中使用 popen() 在 C 中读取包含转义字符的字符串?
【发布时间】:2020-03-23 07:15:11
【问题描述】:

我必须在 C 语言中使用 popen() 显示 Linux(更具体地说,Ubuntu 19.10)目录中的所有文件和子目录。相关代码如下。我调试这段代码时的问题是,“list”变量最多只包含第一个“\n”转义字符,即“.:\n”。如何绕道让 popen() 输出包括转义序列字符在内的所有字符串?

#include <stdio.h>

int main()
{
    FILE *read_file;
    char list[1000];

    read_file = popen("ls -R","r");
    fgets(list, 1000, read_file);
    pclose(read_file);

    printf("%s", list);

    return(0);
}

【问题讨论】:

  • 在循环中使用fgets,直到它返回NULL?
  • 呃,为什么不用opendir()/readdir()/lstat()/etc 全部用 C 语言完成呢? (还有scandir(),但它不是递归的AFAIK)。

标签: c linux escaping popen


【解决方案1】:

@M Oehm。我试过像你评论的那样。但是当我尝试执行“fgets(list[++i], sizeof(char), read_file);”时会出现分段错误。

#include <stdio.h>

int main()
{
    FILE *read_file;
    char list[1000];
    int i = -1;

    read_file = popen("ls -R","r");
    do
    {
        fgets(list[++i], sizeof(char), read_file);
    }while(list[i] != NULL);
    pclose(read_file);

    printf("%s", list);

    return(0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2012-08-17
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多