c/c++语言开发共享从execl()运行脚本

我想使用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++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/560051.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐