我打算在 Ubuntu 上用 C 编写一个简单的 shell。 我考虑过使用
exevcp()
函数。 我只能运行“ls”命令,其他命令似乎都不起作用。 谁能告诉我为什么会这样,或者给我一个构建 shell 的更好方法的想法?我的目的是构建这个 shell;我不明白为什么我不能直接使用命令行并将其原样放入
execvp()
函数中。#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc,char **argv,char **envp) { char* args[] = {"history" , NULL}; execvp(args[0],args); }
你能给我解释一下吗?
最佳答案
exec(3)
只能用于运行外部程序。 history
是大多数 shell 中的内置项,不能以这种方式运行。
关于c - 使用 execvp 在 Ubuntu 上用 C 语言构建 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520360/