2011-10-11 128 views
0

hello每一个我想问我在制作一个程序,我必须使用c程序运行shell脚本。直到现在我已经分开了论点。并且我搜索了那个exec应该用来运行shell脚本 但是我完全困惑,因为exec有很多变种,并且通过阅读手册页我找不到哪个是最适合的使用c编程运行shell脚本

还有一些exec函数第一arg是

路径

和一些具有

指针到文件

的区别是什么,什么我应该在的地方it.kindly的编写指导我 感谢

+0

Exec将与脚本替换当前的程序。如果你想让你的程序继续运行,你应该使用'system'来执行同步执行,'fork' +'exec'来执行异步执行。 –

+0

是否从exec系列中选择execve或其他功能取决于您是否需要/需要使用该路径,是否传递环境变量列表等。如果不需要,请选择最简单的。 – tripleee

回答

3

从C程序运行shell脚本通常使用

#include <stdlib.h> 
int system (char *s); 

其中s是做指向脚本路径名的指针,例如

int rc = system ("/home/username/bin/somescript.sh"); 

如果需要脚本的stdout,请查看popen手册页。

0

全部exec*库函数在execve()系统调用中最终是方便包装。只要使用你觉得更方便的那个。

pexeclp()execvp())结尾的那个使用$PATH环境变量来查找要运行的程序。对于其他人,您需要使用完整路径作为第一个参数。

eexecle(),execve())结尾的那些允许您定义环境(使用最后一个参数)。这样可以避免$PATH,$IFS和其他危险环境变量的潜在问题。

王氏在其名称中一个v的那些采取的阵列来指定参数要运行的程序,同时用l的那些采取的参数要运行的程序作为可变参数,在(char *)NULL结束。举例来说,execle()构造固定调用非常方便,而execv*允许以编程方式变化的多个参数。