我想在C中编写一个程序,它可以读取另一个程序并将其交给处理器执行。可以使用系统调用来执行它而不使用shell(linux)
由于
答案 0 :(得分:6)
您正在寻找的系统调用是execve
。它具有相关函数execl
,execlp
,execle
,execv
,execvp
,具体取决于您希望如何存储和传递命令行参数和/或环境变量。但问题是,所有这些功能都将阻止调用它的程序执行任何其他操作,因为新程序将替换现有程序。
如果要运行程序,等待它完成,然后恢复原始程序,请尝试使用库函数system
。 (虽然system
确实需要/ bin / sh。)
如果您需要更高级的内容,则可能需要将fork
和waitpid
与exec*
个功能合并。在手册页和网络上有很多关于如何组合这些功能的例子。
答案 1 :(得分:0)
如果您想要一种简单的方法来使用它:
system("./Program_To_Run.o");
然而,这不是最好的方法。这是最快的方式。
如果您使用&符号,则可以将过程转到后台:
system("./Program_To_Run.o &");