在c程序中从指针运行函数

时间:2017-05-09 22:37:21

标签: c linux fork

有没有办法使用文件指针从正在运行的c程序中运行程序和/或文件,还是必须使用正常的文件名和system / fork等?如果重要的话,请在linux上写这个。

基本上,我在问这样的事情是否可行:

FILE * fp=fopen("somefile")
//dostuff

运行fp指向的文件(使用fp,不使用文件名)

1 个答案:

答案 0 :(得分:3)

  

有没有办法从正在运行的c中运行程序和/或文件   程序使用文件指针

你所要求的并不是很清楚所以我会试着告诉你一些你能做到的方法。

也许你在谈论execve()

int execve(const char *filename, char *const argv[], char *const envp[]);

其中execve()执行filename指向的程序,argv是传递给新程序的参数字符串数组。类似地,fexecve()execve()的工作方式相同,区别在于要执行的文件是通过文件描述符fd指定的,而不是通过路径名指定。

或者,您可以使用system()来运行某些程序。例如:

int result = system("./myProgram 2 3");

这将等待 myProgram 被执行,然后将获得exitcode。

最后但并非最不重要的是,您可以使用fork()用于创建流程的系统调用。