我想知道如何操作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;
}
答案 0 :(得分:1)
使用shell脚本来更改当前活动的环境。
如果您运行二进制程序来执行此操作,则只会修改自己在启动时分配的环境副本。
在程序结束后,对后者的更改已经消失,因为程序的环境(应用了更改)将会消失。
答案 1 :(得分:0)
您可以,我可以在适当的shell启动文件中设置PS1="New value: "
(例如.profile
或.bash_profile
或.bashrc
)。如果你export PS1
,它也可用于子shell。我没有导出它,所以我可以告诉我什么时候在子shell中。
你不能像你想要的那样去做。
答案 2 :(得分:-2)
您应该使用stdlib.h中的函数system()。