#include <sys/wait.h>
#include <stdio.h>
const int MAXLINE=16;
int main(void){
char buf[MAXLINE];
pid_t pid;
int status;
printf("%% ");
while(fgets(buf,MAXLINE,stdin)!=NULL){
if(buf[strlen(buf)-1]=='\n')
buf[strlen(buf)-1]=0;
if((pid=fork())<0){
printf("fork error!\n");
}else if(pid==0){
execlp(buf,buf,(char*)0);
printf("couldn't execute: %s",buf);
exit(127);
#include <stdio.h>
const int MAXLINE=16;
int main(void){
char buf[MAXLINE];
pid_t pid;
int status;
printf("%% ");
while(fgets(buf,MAXLINE,stdin)!=NULL){
if(buf[strlen(buf)-1]=='\n')
buf[strlen(buf)-1]=0;
if((pid=fork())<0){
printf("fork error!\n");
}else if(pid==0){
execlp(buf,buf,(char*)0);
printf("couldn't execute: %s",buf);
exit(127);
}
if((pid==waitpid(pid,&status,0))<0){
printf("waitpid error");
}
printf("%% ");
}
exit(0);
}
gcc execlp.c
./a.out
程序运行,产生提示符:%,
输入 命令 ls等,就可以看到结果。
按CTRL+D退出。