对于popen返回的FILE,fgets返回错误。 |
您所在的位置:网站首页 › fgets返回null › 对于popen返回的FILE,fgets返回错误。 |
问题描述
我正在尝试从我的C代码执行命令行,但是当我到达FGETS()函数时,我遇到了一个空错误. void executeCommand(char* cmd, char* output) { FILE *fcommand; char command_result[1000]; fcommand = popen(cmd, "r"); if (fcommand == NULL) { printf("Fail: %s\n", cmd); } else { if (fgets(command_result, (sizeof(command_result)-1), fcommand) == NULL) printf("Error !"); strcpy(output, command_result); } pclose(fcommand); }我的命令是: java -jar为什么我会从fgets产生零结果,尽管当我尝试在终端中执行相同的命令时,它会按预期工作. 推荐答案fgets()读取最多比流的大小字符少. 并将它们存储到由s指向的缓冲区中.阅读停止之后 eof或newline.如果读取新线,则将其存储在缓冲区中. a'\ 0'在缓冲区中的最后一个字符之后存储. 简而言之,popen()正在执行fork(),并且您正在尝试从管道中读取程序,然后在该程序引起的cmd>> cmd中产生了输出,因此,管道上没有数据,第一次读取管道上将返回EOF,因此fgets()返回而无需获取数据.您要么需要睡觉,进行民意调查或进行阻止阅读. 本文地址:https://www.itbaoku.cn/post/1758737.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |