【发布时间】:2013-01-11 08:54:09
【问题描述】:
问题是标题。我不明白为什么在执行“ls”后终端会立即关闭。 Linux shell 是这样的:
1.while (1) {
2. char *cmd = read_command();
3. int child_pid = fork();
4. if (child_pid == 0) {
5. 执行(cmd);
6.}其他{
7.waitpid(child_pid);
8.}
9.}
所以,如果我们在 shell 中运行 'exec ls',cmd 是一个 'exec ls' 的字符串。第 3 行创建了一个子进程。在第 5 行,exec(cmd) 将替换子进程,但不会影响父进程。如果父进程不受影响,那为什么终端会关闭呢?
请告诉我上述推理中的缺陷。
【问题讨论】:
-
如果您正在运行
bash,请输入help exec。
标签: linux shell unix command-prompt