【问题标题】:How to add to *argv for execv?如何为 execv 添加到 *argv?
【发布时间】:2021-07-10 17:01:05
【问题描述】:

假设我想用 execv 删除一些东西,但我还不知道要删除什么。

char *argv[] = {"rm", "-r"};

现在,我愿意!如何添加到 argv?如何以 NULL 结束它?谢谢!

【问题讨论】:

    标签: linux ubuntu c arrays exec


    【解决方案1】:

    如果要插入单个文件名、固定数量的文件名或已定义的最大文件名数量,可以静态定义和初始化指针数组,使用 NULL 指针作为占位符

    /* placeholder for two file names and terminating NULL pointer */
    char *argv[] = {"rm", "-r", NULL, NULL, NULL};
    

    稍后将索引 2(和 3)处的 NULL 指针替换为一或两个文件名

    char filename1[1024];
    char filename2[1024];
    
    /* input or construct filenames as strings somehow */
    
    argv[2] = filename1;
    argv[3] = filename2;
    

    如果您需要处理未知数量的文件名,您可能必须动态分配所需大小的指针数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2020-09-14
      • 2014-04-05
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多