execv注意事项
来源:互联网 发布:c语言联合体int的大小 编辑:程序博客网 时间:2024/06/03 04:42
execv的处理中有需要特别注意的东西,
下面是一个可以正常执行的例子
#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { int ret = execv("/bin/ls", argv); printf("ret = %d", ret); return 0; }
编译出来可执行程序test
./test
执行效果类似ls
./test -l
执行效果类似ls -l
另外,
printf("ret = %d", ret);
并没有打印出来
int main(int argc, char* argv[])由于argv的第一个字符串是程序名称,所以,我们可以看出,execv的第二个参数对传入的字符串数组进行了处理,一定程度上忽略了第一个字符串
#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { char* arg[] = {"aa", NULL}; int ret = execv("/bin/ls", arg); printf("ret = %d", ret); return 0; }
这个程序是可以正确执行的。验证了上面的推断。
但是,我们发现,execv执行系统命令并不是简单的去拼接字符串
这个程序的execv执行会出错
#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { char* arg[] = {"aa", " ", NULL}; int ret = execv("/bin/ls", arg); printf("ret = %d", ret); return 0; }
这么写也会执行出错
#include <unistd.h> #include <stdio.h> int main(int argc, char* argv[]) { char* arg[] = {"ls", " -l ", NULL}; int ret = execv("/bin/ls", arg); printf("ret = %d", ret); return 0; }
多了空格就会导致出错,说明了execv的执行方式并不是处理拼接字符串的命令
这个需要特别注意。
0 0
- execv注意事项
- execv
- execv使用
- execv使用
- linux execv
- execv()函数
- execv使用
- execv使用
- execv使用
- execv函数使用
- execl,execv说明
- 关于execv函数
- execv函数族用法展示
- fork、execv 及 waitpid 的例子代码
- execl execlp execle execv execvp execve
- system()与execv()函数使用详解
- C语言execv()函数:执行文件函数
- 注意事项!
- CentOS上安装配置MySQL
- 用递归算法判断数组a[N]是否为一个递增数组。 递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false
- java通过Apache开源框架POI读取Word2003和Word2007转换成html的demo实例
- 在Android系统中使用系统自带的emoji表情
- 欢迎使用CSDN-markdown编辑器
- execv注意事项
- 杀掉占用端口
- ACM解题总结———HihoCoder1403(后缀数组)
- HYSBZ1083-繁忙的都市
- Codeforces Round #381 (Div. 2) D Alyona and a tree(DFS树上搞事)
- 数据结构学习一:链表
- 我的caffe学习之路<第十二天>
- Mint18 KDE版安装fcitx输入法
- 字符串对比 (STl强制转换字符串)