我想使用execl()
来启动一个没有执行权限的脚本。 从命令行完成后,这很好用:
[bf@bf-laptop-tbwb playground]$ /bin/sh test.sh I run !
但是,当我想从C使用execl
时,它只是启动另一个shell,而不运行我的脚本。
int main(int argc, char **argv) { execl("/bin/sh", "/home/bf/playground/test.sh", NULL); return 0; }
我不能只运行脚本,因为我不能保证脚本是可执行的(它在嵌入式设备上,加载了FTP脚本)。
尝试
execl("/bin/sh", "sh", "/home/bf/playground/test.sh", (char *) NULL); /* exec*()-functions do not return on success, so we only get here in case of error. */ perror("execl() failed");
从man 3 exec
这些函数的初始参数是要执行的文件的名称。
execl() , execlp()和execle()函数中的const char * arg和后续省略号可以被认为是arg0,arg1,…,argn 。
arg0
相当于arg[0]
,这是程序的名称。 程序的第一个参数是arg[1]
。
另请注意(下面是exec*()
的手册页 ):
参数列表必须由空指针终止,并且由于这些是可变参数函数,因此必须强制转换此指针(char *)NULL 。
以上就是c/c++开发分享从execl()运行脚本相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560051.html