gpt4 book ai didi

c - 为什么这条烦人的线会干扰我的输出?

转载 作者:行者123 更新时间:2023-11-30 15:12:04 24 4
gpt4 key购买 nike

我开发的这段代码只是为了解决我正在开发的另一个大型程序中遇到的问题。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <cstring>
#include <cstdlib>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <limits.h>
#include <string>
#include <iostream>

using namespace std;
void processLine (char []);
void readLine(char []);

const int LIMIT = 512;
int main(int argc, char *argv[])
{
char oneLine[LINE_MAX];
readLine(oneLine);


return 0;
}
void readLine(char line[])
{
processLine(line);
printf("Annoying line\n");
}
void processLine(char line[])
{

pid_t process;
int child_status;

string input;
cout << "Input: ";
cin >> input;


process = fork();
if(process == 0)
{ // do nothing
}
else
{
//parent
if(input == "quit")
{
printf("Quit command found ! \nExiting ");

for(int i = 0;i < 3;i++)
{
printf(".");
fflush(stdout);
sleep(1);

}

printf("\n");
exit(0);
}
else
{
wait(&child_status);
}
}

}

我的目标很简单,当用户输入 quit 时。

我只显示

Quit command found

Exiting ...

这三个点之间各有一秒的延迟。

但是我得到的输出是

Quit command found

Exiting . Annoying line..

我想知道为什么这个烦人的行会在第一个点之后打印,即使它来自调用函数并且不轮到打印到终端???

任何想法。我花了 10 个小时尝试解决这个问题

最佳答案

在子进程中,您的 //do Nothing 失败并返回到 main() 并打印该行。 fork() 生成两个副本并继续执行。通常,子进程会立即调用 exec() 来运行其他内容(从不返回),但您并没有做类似的事情。

关于c - 为什么这条烦人的线会干扰我的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35250727/

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