从Ubuntu中的另一个C文件中运行一个C文档



我需要在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可能不可避免地会成为您的归宿。

相关内容

  • 没有找到相关文章

最新更新