gpt4 book ai didi

c++ - 退出(0)不结束程序

转载 作者:行者123 更新时间:2023-11-28 01:25:56 25 4
gpt4 key购买 nike

我正在制作一个 shell 并试图理解 fork 它的功能(下面仅显示有问题的代码)。

但是,在添加 fork(); 之后,我的 shell 没有使用命令 exit 退出。我知道我可以使用 kill(pid, SIGKILL) 来实现这一点,但我不想显示任何退出状态。我认为 exit(0); 应该可以在不需要 kill(pid, SIGKILL) 的情况下工作。

对代码进行简单的解释会有很大帮助。

更新:我想接受连续命令直到退出。

#include <iostream>
#include <sys/wait.h>
#include <vector>
#include <string>
#include <chrono>
#include <algorithm>
#include <unistd.h>
using namespace std;

typedef struct cmds{
string cmd;
} cmds;
bool operator<(cmds &as1, cmds &bs1){
return as1.durr<bs1.durr;
}


int main() {
vector <cmds> lst;
cmds ant;
string cmd;
pid_t pid = fork() ;
while (1){
if(pid==0){
cout<<"$>";
getline(cin,cmd);
ant.cmd=cmd;
string comd;
for(int i=0;i<cmd.length();i++){
if(cmd[i]!=' ')
comd+=cmd[i];
}
if(comd=="exit"){
exit(0);
}
else{
char s[256]="";
for (int i=0; i<cmd.length(); i++)
s[i]=cmd[i];
}
lst.push_back(ant);
}
else
wait(NULL);
}
}

**Expected output** - //The shell should end without any cout or exit status//

**Actual output** - //The shell does not end and you can type anything and enter and continue - however no '$' is present and you cannot use any shell commands//

对于任何乱七八糟的写作表示歉意 - 用于编写问题的新 UI 很难使用。

最佳答案

您的父进程卡在 while(1) 循环中。在 wait(NULL); 之后添加 break; 行。

关于c++ - 退出(0)不结束程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53873510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com