Python程序未接收printf的输出

Python程序未接收printf的输出,python,c,Python,C,对于一个任务,我必须做一个quoridor游戏,游戏必须与用python编写的裁判进行通信,这样两个quoridor客户机就可以一个对另一个进行比赛,出于某种原因,无论我在c程序中打印什么,python实例都没有收到,或者我的c程序没有通过scanf从python裁判那里收到任何东西 我管理裁判的方式就是这样 ./referee.py --black ./quoridor --white ./quoridor 它发送给./quoridor的第一个命令是命令“name”,并且quoridor

对于一个任务,我必须做一个quoridor游戏,游戏必须与用python编写的裁判进行通信,这样两个quoridor客户机就可以一个对另一个进行比赛,出于某种原因,无论我在c程序中打印什么,python实例都没有收到,或者我的c程序没有通过scanf从python裁判那里收到任何东西

我管理裁判的方式就是这样

./referee.py --black ./quoridor  --white ./quoridor 
它发送给./quoridor的第一个命令是命令“name”,并且quoridor必须用它的名称响应,如果我运行./quoridor并键入它刚刚找到的名称,它将用名称响应。但裁判却不是这样

char command[MAX_COM_SIZE];
scanf("%s",command);
if(strcmpIgnoreCase(command,"name")==0){
    printf("= Athinaios\n\n");
}
教授给我提供了一个二进制的quoridor,它工作得很好,从终端上看,它的行为与我的行为完全相同

在你的代码中调用
printf()
会正确地将格式化字符串放入标准输出。但是,问题是C标准库文件描述符是缓冲的,因此在缓冲区已满或显式刷新之前,输出不会出现

要刷新输出,请使用
fflush

printf("= Athinaios\n\n");
fflush(stdout);
或者,在开始时禁用缓冲:

setbuf(stdout, NULL);
代码中的
printf()
调用将格式化字符串正确地放入标准输出。但是,问题是C标准库文件描述符是缓冲的,因此在缓冲区已满或显式刷新之前,输出不会出现

要刷新输出,请使用
fflush

printf("= Athinaios\n\n");
fflush(stdout);
或者,在开始时禁用缓冲:

setbuf(stdout, NULL);

在这种情况下,没有理由进行缓冲i/o。我会使用写调用。

在这种情况下,没有理由进行缓冲I/o。我会使用写呼叫。

可能是缓冲?尝试
fflush(stdout)
。如果刷新stdout会发生什么@kfx,该死的,我燃烧脑细胞两个小时,现在想弄明白,就是这样!看起来像是一个常见的陷阱,很可能已经被屏蔽了,我应该删除这个问题还是你会发布一个正式的屏蔽器?@SteveL可能有助于回答通过谷歌搜索来的人,标题非常具体,可能不是一个罕见的问题。缓冲可能?尝试
fflush(stdout)
。如果刷新stdout会发生什么@kfx,该死的,我燃烧脑细胞两个小时,现在想弄明白,就是这样!看起来像是一个常见的坑落,很可能已经被遮住了,我应该删除这个问题,还是你将发布一个正式的遮住?史蒂文可能有助于回答通过谷歌搜索来的人,标题非常具体,可能不是一个罕见的问题。