c - 为什么这两个 execvp 会产生不同的结果?
问题描述
我想知道为什么下面会产生不同的结果:
char *const temp[] = {"cal","4","2019",NULL};
execvp(temp[0],temp);
perror("Return from execlp not expected");
exit(EXIT_FAILURE);
执行时将生成一个只有 4 月的日历
char *const temp[] = {"cal"};
char *const temp2[] ={"4","2019",NULL};
execvp(temp[0],temp2);
perror("Return from execlp not expected");
exit(EXIT_FAILURE);
执行时将生成一个包含所有月份的日历
我想让第二种形式正常工作,至于我的问题,我有 2 个数组,一个用于存储我的所有命令,另一个用于存储我的所有命令参数。例如
array1[0] = command
array2[0] = arg1 ar2 arg3 // the arguments for the command in array1[0]
在一个循环中,直到我到达命令数组的末尾,使用 fork 并在子类中执行这些命令,以便我可以遍历并执行数组中的所有命令。
解决方案
根据execvp 人
int execvp(const char *file, char *const argv[]);
execv()、execvp() 和 execvpe() 函数提供了一个指向以 null 结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应该指向与正在执行的文件关联的文件名。 指针数组必须以 NULL 指针终止
推荐阅读
- python - 指定从 SQL Server 返回的数据框中列的数据类型
- c++ - 如何编写没有变量的for循环?
- android - 使用矩形和三角形创建 Android XML 形状,如图背景所示
- python - 安装和运行 PyTorch 的问题
- node.js - 在 Visual Studio 代码中使用 typescript 和 webpack 调试 nodejs 项目的正确方法
- python - 自定义聚合时间序列功能
- python - 字符串中的子字符串匹配
- c++ - 让独立的 shared_ptrs 指向同一个对象是否合法?
- php - 使用 PHP Explode 解析消息体
- java - List.indexOf() 与我的班级的自定义 equals() 返回 -1