无效的时间间隔&在我正在创建的基本shell中

时间:2016-03-02 01:07:58

标签: c shell

所以我正在创建一个基本的shell。我分叉并调用execvp。如果命令(即sleep 5m &)具有"&"最后,我的父进程不会等待孩子。否则它确实如此。所以在子进程中,我调用了execvp(args[0],args)。如果args为sleep 5m &,我该怎么删除&这样子进程只能读取sleep 5m而不是&因为我猜这是问题的来源。

if(pid==0){
   execvp(args[0],args);
}
//if parent process
if(!(strcmp(args[0],"&")==0)){
  wait(0);
}
编辑:我能够通过使用标志解决它,如果用户输入包括&,我打开了标志。现在它可以工作

1 个答案:

答案 0 :(得分:0)

char *idx = strrchr(cmd, '&');
if(idx != NULL)
    *idx = '\0';

找到最后一个&在字符串中,用' 0'替换它。 (字符串结束)