执行perl / python / . .使用exec()的脚本
executing perl/python/... scripts using exec()
我一直在玩linux exec()函数在我的c++程序,我试图执行脚本(perl, python, php,…)。
从bash我可以执行如下命令:sh -c "perl/home/ignition/test.pl"
,
execl("/bin/sh", "sh", "-c", ""perl /home/ignition/test.pl"", NULL);
不起作用。
execl("/bin/sh", "sh", "-c", "/home/ignition/test.pl", NULL);
,但这依赖于perl解释器的正确路径被指定为脚本的第一行,这不是很通用,例如,这不适用于PHP脚本。我想使用sh -c方法,以便自动解析解释器的路径…
谁能指出我做错了什么?在第一个示例中,您试图执行一个名为"perl
的程序,提供一个文件/home/ignition/test.pl"
作为第一个参数。当您直接使用shell时,它会在启动程序之前删除引号。
Try this: execl("/bin/sh", "sh", "-c", "perl /home/ignition/test.pl", NULL);
使用exec
函数时,不需要在包含空格的参数周围使用引号。试一试:
execl("/bin/sh", "sh", "-c", "perl /home/ignition/test.pl", NULL);
或者,您可以像这样更改脚本中的shebang行:
#!/usr/bin/perl -w
#!/usr/bin/env perl -w
env
程序知道如何搜索PATH
以找到perl
二进制文件,并且不依赖于硬编码位置(您几乎可以肯定/usr/bin/env
存在)。
相关文章:
- 如何在c++中使用system()来运行包含空格的python脚本
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在原子中使用犰狳与脚本
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- 使用 Main() 返回值作为 python 脚本的参数
- bash脚本在使用popen()时不返回代码以调用C ++程序
- 如何注册枚举类型到QJSEngine,以便在脚本环境中使用?
- 使用 execv 从C++代码执行的 Linux 脚本失败
- 如果从脚本运行应用程序,则在 Linux 中使用 GDB
- 从网站复制证书,并使用脚本将其添加到受信任的根证书颁发机构
- 使用 bash 脚本和测试处理进行代码编辑
- 错误,在嵌入在C++程序中的 python 脚本中使用 matplotlib 时
- 如何使用VB经典IDE在VB脚本中调试ActiveX应用程序
- 在使用PyInstaller冻结Python脚本时包含一个C++可执行文件
- 使用 pipe() 和 fdopen() 将数据从 Python 脚本传递到 Windows 中的C++应用程序
- 如何创建C++DLL(使用DEV -C++)并在MT4脚本中使用(逐步)
- 我怎么能得到列表的所有表名在.Lua脚本使用Lua C API
- DirectWrite:拉丁语和复杂脚本使用不同的字体
- 操作脚本 3 - 使用数组 - 矢量类型初始化 AS 3.0 矢量。<Array>?(加上等效C++)
- 扩展到web服务器编写脚本使用c++