使用fork()和exec()在终端中创建新命令

时间:2013-10-24 05:43:41

标签: c linux exec fork

我想知道如何操作C程序在终端中运行命令。

例如: 如果我运行这个语句PS1 =“Linuxrocks $”,它在终端运行正常。 但是我怎么写一个程序来做同样的事情。或者我使用什么功能?

    #include <sys/types.h>
    #include <sys/wait.h>
    #include <stdio.h>
    #include <unistd.h>

    int main() {
            char *argv[3] = {"Command-line", ".", NULL};

            int pid = fork();

            if ( pid == 0 ) {
                    execvp( PS1="linuxrocks $", argv );
            }

            wait( NULL );
        printf( "Finished executing the parent process\n" );

        return 0;
    }

3 个答案:

答案 0 :(得分:1)

使用shell脚本来更改当前活动的环境。

如果您运行二进制程序来执行此操作,则只会修改自己在启动时分配的环境副本。

在程序结束后,对后者的更改已经消失,因为程序的环境(应用了更改)将会消失。

答案 1 :(得分:0)

您可以,我可以在适当的shell启动文件中设置PS1="New value: "(例如.profile.bash_profile.bashrc)。如果你export PS1,它也可用于子shell。我没有导出它,所以我可以告诉我什么时候在子shell中。

你不能像你想要的那样去做。

答案 2 :(得分:-2)

您应该使用stdlib.h中的函数system()。