是否有人可以建议此程序有什么问题 。 我试图在此创建子进程来执行像 shell 一样的特性 。 在给出一个单词如 < code> > code > 或 < code> < pwd code> 的命令时, 它有效, 但命令中却有多个单词, 如 < code> > - lrt code > 或 < code> 谁是 i < / code > 无效 。 我正在做一些愚蠢的错误, 但无法调试 。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <iostream>
#include <wait.h>
#include <errno.h>
#include <sys/types.h>
#include <cstdlib>
#define BUFSIZE 200
#define ARGVSIZE 40
#define DELIM "
"
int main ()
{
int i,n;
char buf[BUFSIZE + 1] ;
char * str = "Shell > ";
char * clargs[ARGVSIZE] ;
int returnstatus;
for(;;)
{
n = 1;
write(STDOUT_FILENO,str,strlen(str));
read(STDIN_FILENO,buf,BUFSIZE);
if(!strcmp(buf,"exit
"))
{
perror("exit");
exit(20);
时 时
clargs[0] = strtok(buf,DELIM);
while((clargs[n] = strtok(NULL,DELIM)) != NULL)
n++;
clargs[n] = NULL;
switch(fork())
{
case 0:
if((execvp(clargs[0],&clargs[0])) < 0)
exit(200);
default:
wait(&returnstatus);
printf("Exit status of command : %d
",WEXITSTATUS(returnstatus));
for(int i =0; i <= n;i++)
clargs[i] = " ";
for(int i =0; i < BUFSIZE+1;i++)
buf[i] = ;
时 时
时 时
return 0;
时 时