gpt4 book ai didi

c - 在 C 中的 fork 进程内的 scanf 之前调用 Printf

转载 作者:行者123 更新时间:2023-12-01 14:07:32 25 4
gpt4 key购买 nike

我在使用 fork() 创建的新进程中使用 scanf 时遇到了问题。 Scanf 没有被阻塞,所以 printf 被一遍又一遍地调用。

下面是代码示例:

int main(int argc,char *argv[])
{
switch(fork()) {
case 0:
while(1) {
char buffer[100];
scanf("%s",buffer);
printf("Input was %s\n",buffer);
}
}
return 0;
}

有人知道如何解决这个简单的问题吗? (部分代码缺失,针对这个问题我将代码缩减到了最低限度)

最佳答案

问题出在您为制作最小示例而注释掉的代码中,运行它非常好

#include <stdio.h>

int main(int argc,char *argv[])
{
switch(fork()) {
case 0:
while(1) {
char buffer[100];
scanf("%s",buffer);
printf("Input was %s\n",buffer);
}
break;
default:
sleep(100);
break;
}
return 0;
}

我的猜测是,在你的 fork 调用周围的完整代码中,还有一些文件关闭以创建子进程并将其与终端分离——这是标准输入的关闭和从使您 scanf 失败的终端。

关于c - 在 C 中的 fork 进程内的 scanf 之前调用 Printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043107/

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