Unix:fork()、wait()、exec for命令解释器
我一直在开发一个unix c程序,在这个程序中,我要输入一个命令fork(),在子处理器中执行execvp(argv[0],argv),然后等待子处理器完成。然而,我在两个方面遇到了问题。我需要程序能够反复接收命令,直到我作为命令输入“exit”。我不知道如何在C中这样做。第二,当我输入命令时,比如说ls-l,解释器只接受ls命令,而不接受-l,需要帮助解决这个问题。这是我的密码:Unix:fork()、wait()、exec for命令解释器,unix,exec,Unix,Exec,我一直在开发一个unix c程序,在这个程序中,我要输入一个命令fork(),在子处理器中执行execvp(argv[0],argv),然后等待子处理器完成。然而,我在两个方面遇到了问题。我需要程序能够反复接收命令,直到我作为命令输入“exit”。我不知道如何在C中这样做。第二,当我输入命令时,比如说ls-l,解释器只接受ls命令,而不接受-l,需要帮助解决这个问题。这是我的密码: #include <unistd.h> #include <string.h> #incl
#include <unistd.h>
#include <string.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int pid,status,rs;
char comm[100];
while(comm!="exit"){
cout<<"Enter command:\n ";
cin.getline(comm,100);
char *token=strtok(comm," ");
pid=fork();
if(pid==-1)
{
perror("fork");
exit(pid);
}
if(pid==0)
{
char *argv[]={token,0};
while(token!=NULL){
rs=execvp(argv[0],argv);
token = strtok(NULL, " ");
}
if(rs==-1)
{
perror("execvp");
exit(rs);
}
}
else
{
cout<<"Done waiting for: "<<wait(&status)<<endl;
}
}
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int-pid,状态,rs;
字符通信[100];
while(通信!=“退出”){
库特