我听说过编写自己的shell的两种方法。第一种方式包括步骤:
while循环中的1-输入命令
2-内部循环使用fork()(为一个进程)为每个命令,然后使用exec()系统调用来执行该命令。
第二种方式是:
while循环中的1-输入命令
2-内部循环使用fork()(为一个进程)为每个命令,然后使用system()系统调用来执行该命令。
我想知道哪一种更适合使用。
任何建议都非常感谢。
答案 0 :(得分:2)
system(3)
调用调用/bin/sh
来运行命令。
如果你考虑调用系统shell是“实现”自己的shell的合法方式,那么你也可以摆脱while循环,只需要myshell.c
包含
int main(int argc, char** argv) {
execve("/bin/sh", argv, environ);
}