23,110
社区成员
发帖
与我相关
我的任务
分享
代码给你放上吧
你的这个程序不能处理函数,参看我给你写的那个流程,对参数的处理要用
getopt()。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
int pid;
char cmd[100] = {0};
char* ptr;
while(1)
{
ptr = cmd;
printf("PROMPT>");
gets(ptr); //这个函数不让用会有警告,换成fgets就行了
/*while((*(ptr++)=getchar())!='\n');
*ptr = 0;*/ //这两句执行完后cmd是空的,不信你puts下ptr
if(!strcmp(cmd,"q\n"))
{
printf("exit\n");
return 0;
}
if ((pid = fork()) == 0)
{
if(execlp(ptr," ",(char*)0) == -1) //不明白的直接谷歌exec函数族
puts("execvp error!\n");
return 0;
}
else
if (pid >= 1)
{
waitpid(pid,NULL,0);
}
else
{
puts("error");
return -1;
}
}
return 0;
}
//楼主,磨刀不误砍柴工,仔细看APUE,这些都是最基本的问题
if ((pid = fork()) == 0)
{
exec(cmd); //没有exec这个函数,exec族是6个函数的统称
return 0;
}