【发布时间】:2013-07-04 06:16:51
【问题描述】:
我写了一个简单的程序来理解 execl() 的概念。这是我的程序
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == 0)
{
execl("/bin/sh","sh","-c","ls -l *.c", NULL);
}
}
当我执行它时,它会显示扩展名为“.c”的文件列表。但是,子进程似乎没有结束,光标一直在闪烁。
srico@ubuntu:~/Desktop/c$ -rw-rw-r-- 1 srico srico 84 Jun 30 08:30 cmdacc.c
-rw-rw-r-- 1 srico srico 138 Jul 4 11:08 execfun.c
-rw-rw-r-- 1 srico srico 343 Jul 4 10:27 execvp1.c
-rw-rw-r-- 1 srico srico 167 Jun 23 08:20 filechar.c
-rw-rw-r-- 1 srico srico 195 Jun 23 11:20 fileline.c
-rw-rw-r-- 1 srico srico 203 Jun 27 07:17 filestat.c
-rw-rw-r-- 1 srico srico 112 Jun 22 11:11 new.c
-rw-rw-r-- 1 srico srico 304 Jun 27 12:09 parchild1.c
-rw-rw-r-- 1 srico srico 1038 Jun 27 10:56 parchld.c
我必须使用 ctrl+c 手动终止进程。
^C
srico@ubuntu:~/Desktop/c$
请帮我改正错误。
【问题讨论】:
-
它为我退出。我首先得到提示,然后是输出。再次按 Enter 会得到另一个提示。
-
我看到它对你也一样。你已经在第一行得到了提示。