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

标签 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;
    }

最佳答案

使用 shell 脚本更改当前事件环境。

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

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

关于使用 fork() 和 exec() 在终端中创建新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19557862/

相关文章:

通过源代码编译c文件

c - 使用exec运行/usr/sbin下的文件

PHP exec 更改编码

c++ - 在循环中的什么时候整数溢出成为未定义的行为?

C - 在多个函数中使用结构

Linux : NetworkManager's/etc/NetworkManager/dispatcher. d/test 脚本不起作用。包含代码

linux - 在 mac 终端中过滤文件

c - 如何在C文件中运行shell命令并在变量中分配一个整数?

php exec() 响应与 Windows 8 Metro 应用程序不同

c - 在 linux 系统上打印文件的 uid