executing perl/python/… scripts using exec()
我一直在玩我的C++程序中的Linux执行函数,我试着执行脚本(Perl,Python,PHP,……)。
从bash我可以执行例如:sh-c"perl/home/ignition/test.pl"
但是
1 | execl("/bin/sh","sh","-c",""perl /home/ignition/test.pl"", NULL); |
不起作用。这是可行的:
1 | execl("/bin/sh","sh","-c","/home/ignition/test.pl", NULL); |
但这依赖于将Perl解释器指定为脚本第一行的正确路径,这不是非常通用的,例如,它不适用于PHP脚本。我想使用sh-c方法来自动解析解释器的路径…
有人能指出我做错了什么吗?
在第一个例子中,您试图执行一个名为
试试这个:
在使用
1 | execl("/bin/sh","sh","-c","perl /home/ignition/test.pl", NULL); |
或者,您可以将脚本中的shebang行从以下内容更改为:
1 | #!/usr/bin/perl -w |
到
1 | #!/usr/bin/env perl -w |