我需要在Ubuntu上的另一个C程序中运行一个C。类似于scanf i//say i=2被输入
switch (i){
case 1: print xyz;
break;
case 2: cc abc.c -lpthread (and then) ./a.out //execute this command to execute file with name abc
break;
}
如何做到这一点?我在谷歌上彻底搜索了一遍,但找不到合适的答案。
编辑:我现在正在bash文件中运行上述execute命令。它以一种简单的方式工作并解决了我的需求:D
#! /bin/bash
read a
if [ $a -eq 1 ]
then
cc ex.c -lpthread
./a.out
else
echo "hi"
fi
您需要使用fork()和exec()来生成子流程(不管该流程在做什么-我注意到您正在编译和运行一个新流程)。
如果您想生成一个进程并等待它,只需依靠返回(错误)代码来确定成功,那么system()
是一个选项。
您可以运行系统函数进行编译,并派生一个新进程和执行可执行文件。
如果您想在父C程序中处理派生子程序的一些输出,还可以填写"三大选项":popen。
如果您运行的东西具有与编译器一样多的潜在输出,那么fork & exec
可能不可避免地会成为您的归宿。