exec
执行脚本程序的时候遇见两个问题
1.执行脚本start.sh
大家的写法应该都是
char *argv[] = {NULL}; execv("/root/Projects/wind/start.sh", argv);
脑抽的写法是
char *argv[] = {"/root/Projects/wind/start.sh", NULL}; execv("/bin/sh", argv);
后者是永远不会结束,而且进入到shell界面。
2.因为执行的脚本里还会执行其目录下的脚本,所以用到execve,设置环境变量
我的做法是
char *envv[2] = {"PWD=/root/Projects/wind", NULL}; char *argv[] = {NULL}; execve("/root/Projects/wind/start.sh", argv, envv);
在start.sh输出环境变量时,PWD不生效(HOME就可以)
我百度到的解决方案[最近运气是真的好]
https://hant-kb.kaifa99.com/others/post_12697618
char *argv[] = {NULL}; chdir("/root/Projects/wind"); execv("/root/Projects/wind/start.sh", argv);
case closed.
posted on 2021-04-19 16:42 toughcactus 阅读(86) 评论(0) 编辑 收藏 举报