编写Shell - 使用system()或exec()来运行命令?

时间:2014-04-12 22:47:02

标签: c++ shell exec fork

我听说过编写自己的shell的两种方法。第一种方式包括步骤:

while循环中的1-输入命令
2-内部循环使用fork()(为一个进程)为每个命令,然后使用exec()系统调用来执行该命令。

第二种方式是:

while循环中的1-输入命令
2-内部循环使用fork()(为一个进程)为每个命令,然后使用system()系统调用来执行该命令。

我想知道哪一种更适合使用。
任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

system(3)调用调用/bin/sh来运行命令。

如果你考虑调用系统shell是“实现”自己的shell的合法方式,那么你也可以摆脱while循环,只需要myshell.c包含

int main(int argc, char** argv) { 
  execve("/bin/sh", argv, environ);
}