c - 你如何编写一个 C 程序来执行另一个程序?

标签 c linux

在 linux 中,我想编写一个启动另一个程序的 C 程序。当程序运行时,shell 将等待您输入您在程序中定义的命令。此命令将启动第二个程序。

例如,假设在与调用程序相同的目录中有一个名为“hello”的简单 C 程序。 “hello”程序打印输出“hello, world”。第一个程序将运行,用户将输入命令“hello”。 “你好”程序将被执行,“你好,世界”。将输出到 shell。

我做了一些搜索,人们建议使用“fork()”和“exec()”函数。其他人说使用“system()”。我对这些功能一无所知。我如何调用这些函数?它们适合使用吗?

带有解释的示例代码会很有帮助。也欢迎其他答案。非常感谢您的帮助。

最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> /* for fork */
#include <sys/types.h> /* for pid_t */
#include <sys/wait.h> /* for wait */

int main()
{
    /*Spawn a child to run the program.*/
    pid_t pid=fork();
    if (pid==0) { /* child process */
        static char *argv[]={"echo","Foo is my name.",NULL};
        execv("/bin/echo",argv);
        exit(127); /* only if execv fails */
    }
    else { /* pid!=0; parent process */
        waitpid(pid,0,0); /* wait for child to exit */
    }
    return 0;
}

关于c - 你如何编写一个 C 程序来执行另一个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460421/

相关文章:

c - 使用 "array name"和 "address-of array name"打印数组的地址

c++ - 动态加载共享可选对象

c++ - 以编程方式设置全局环境变量

c - 为什么 printf() 打印这样的东西?

c - 从 C 中的函数返回字符串

linux - Squid3 URL block

linux - 与 cat 相比,Bash while read 循环非常慢,为什么?

glibc 中的更改不起作用

linux - 如何解析 bash 输出中的链接

c - 虽然循环不会像 C 中预期的那样中断