一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)

VS Code终端运行Claude触发多窗口问题根因与修复 CLI工具在Windows终端中的进程启动行为,本质上是控制台应用与GUI环境的边界交互问题。其原理涉及PowerShell命令解析链、Node.js子进程创建机制,以及Windows对CREATE_NO_WINDOW标志的底层响应逻辑。技术价值在于避免GUI上下文误继承导致的资源滥用和体验断裂;典型应用场景包括AI CLI工具(如Claude)、Electron封装型命令行程序,在VS Code集成终端中执行时引发的异常窗口弹出、卡死或雪崩式实例启动。本文聚焦于Windows平台下VS Code + Po 阅读详情

    一段简单程序为什么在linux终端与win控制台下运行效果不同,是程序问题还是兼容性问题,希望有谁能指点一下:

    程序是这样的(怎么加为高亮?):

#include <stdio.h>
int  ProgressBar (int  p, char  *barname);
int  main(int  argc, char  *argv[])
{
    long int  i=0;
    for (i=0; i<=180000000; i++)   //模拟进度条增长
    {
        if(i!=0 && 180000000/i<=100 && 180000000%i==0)  /* 只在进度条长度101-180000000/i为1到100时,刷新进度条*/
        {   /*这个进度条就是显示‘进度条长度’个'|'字符,这个for循环应该使进度条不断增长直到结束*/
            ProgressBar (101-180000000/i, "Progress Bar");      /* ProgressBar第一个参数是0到100之间 ,表示进度条的长度*/            
        }

    }
    
    return 0;
}

int  ProgressBar (int p, char *barname)
{
    if(p>100)
    {
        return 0;
    }    
    
    int  i=1, pbc;
    char   pro[50+1];
    pbc = p/2;          //length of progress bar
    if(pbc==0)
    {
        putchar(10);
        printf("/r%s      %d%c", barname, p, 37);
    }
    else
    {
        pro[0]='|';
        while(i<pbc)
        {
            pro[i]='|';
            i++;
        }
        pro[i]=0;               
        printf("/r%s   %s   %d%c", barname, pro, p, 37);
    } 
}
    win控制台效果:(vc6下编译)

    如同预期的效果进度条不断增长直到100%

 

 

 

   linux终端显示是:(gcc编译连接,直接执行pbar)

       实际效果是根本没有个增长的过程,而是光标闪烁一段时间后(程序在运行)直接显示如下(100%)

 

 

    将这段稍作修改 原本要整除180000000%i==0,才刷新 Progress Bar(在同一行刷新Bar是用回车符'/r’),改为180000000%i<50

这样一个范围内刷新,这样 linux终端显示效果会好些,而且这个值越大,效果越好(指的是增长的效果是连续的);

 

    for (i=0; i<=180000000; i++)  //模拟进度条增长
    {
        if(i!=0 && 180000000/i<=100 && 180000000%i<50)  // 只在进度条长度101-180000000/i为1到100时,刷新进度条
        {    //这个进度条就是显示‘进度条长度’个'|'字符,这个for循环应该使进度条不断增长直到结束
            ProgressBar(101-180000000/i, "Progress Bar");      //  ProgressBar第一个参数是0到100之间 ,表示进度条的长度           
        }

    }

 

    太大也会出现异样,比如改为180000000%i<500, 不过这个效果倒是和win控制台一样

 

 

   请问下各位,这个问题出在哪里了?

 

   补充:

  linux终端执行以下代码:

  ProgressBar(10, "test");
  for (i=0; i<=80000000; i++);
  ProgressBar(30, "test");
  for (i=0; i<=80000000; i++);
  ProgressBar(80, "test");
  for (i=0; i<=80000000; i++); 
  ProgressBar(10, "test");

 

 

    出现这种结果是对的,就是过程上看不到 从 ProgressBar(10, "test");到  ProgressBar(80, "test");
的过程,而是光标闪烁一段时间后(程序在运行)直接显示这个效果 ,还有就是如果ProgressBar()后都加上putchar(10)

倒是可以按应有的顺序print出来:

 

 

 

在 Linux上如何运行 Windows应用程序 Wine 是一个令人神往而且目标远大的开放源代码项目,它尝试去解决在 Linux 上运行 Windows 可执行文件的复杂问题。尽管 Wine 不是一个新项目,但是,人们对 Linux 桌面的期望以及对 Linux 应用程序的需求日益增加,使得它现在仍具有重要意义。本文对 Wine 进行了介绍,并提出了几种获得 Wine 内部操作经验的途径。 立即下载

相关推荐

quartus 13.1常见报错解决方法

在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。 一、编译出现lience错误 在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。 如图所示有两种破解器,分别对应32位和64位的软件,大部

肥宅的博客 3万+

同样的c代码,为何在windows下和linux下执行结果不一样?

代码如下: #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { char *in_utf8 = "你在干吗呢"; char *in_gb2312 = "安装超人"; char *in_eng = "English man"; printf("len1=%d, len2=%d, ...

weixin_34309543的博客 1420

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 327

linux与windows相同,相同的程序在Windows和Linux上表现不同

该程序是使用模板链接列表。#includeusing namespace std;template class link{struct node{T data;struct node * next;}*p;public:link();void addatbeg(T);void show();void rematbeg();void addatmid(T,T);};template link::li...

weixin_33258874的博客 524

VINS技术路线与代码详解

VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探讨。话不多说,下面上正文。 VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono 参考文档:1.VINS-Mono A R...

wangshuailpp的博客 7万+

为ESXI Host添加v3700 FC存储

物理环境: ESXI Host version 5.1.0 Brocade SAN Switch v3700 Storage 存储和ESXI Host分别用光纤线连接在SAN交换机上 1.查询ESXI Host 的WWN号: 2. SAN交换机上查询存储的WWPN号 SAN交换机: 3.建立zone,添加到cfg文件中 brocade8Gb

haoshuwei531024的专栏 7562

StringUtils.isNotEmpty()报红,从而导致项目运行失败

StringUtils.isNotEmpty()报红,从而导致项目运行失败

agng1314的博客 6590

一键转换B站M4S缓存为MP4:无需FFMPEG命令的简易工具

本文介绍了一款专为B站用户设计的绿色工具,可将缓存的M4S视频和音频文件一键转换为通用MP4格式。该工具完全图形化操作,无需学习复杂的FFmpeg命令,解决了普通用户处理B站缓存视频的痛点。文章详细讲解了从下载、配置到转换的完整流程,并提供了常见问题排查与安全使用建议,帮助用户高效、安全地管理离线视频内容。

joy55的博客 480

在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...

1. 编写控制台程序,获得标准输入输出的窗口句柄GetStdHandle函数声明如下 :HANDLE GetStdHandle(DWORD nStdHandle);GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出 /错误的屏幕缓冲区的句柄。其参数nStdHandle的值为下面几种类型的一种:值 含义STD_INPUT_HANDLE 标准输入的句柄STD_OU...

weixin_30910893的博客 2683

Visual Studio Code ADT Extension 能不能连接 ECC,答案是可以,但真正的门槛在 ABAP 后端版本

Visual Studio Code 版 ABAP Development Tools(ADT)支持连接传统 SAP ECC 系统,关键不在于系统名称,而在于底层 SAP NetWeaver AS ABAP 版本是否达到最低要求(7.31 SP04 及以上)。只要系统已支持 Eclipse ADT,即可无缝使用 VS Code ADT,无需升级后端。SAP 通过复用原有 ADT 技术栈,将兼容性逻辑置于客户端,实现对老系统的持续支持。尽管初期侧重 ABAP Cloud 模型,但 1.1 及后续版本已全面覆盖

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 49

华为OD机试真题 新系统 2026-04-19 Java&Go 实现【分辨率排序】

华为OD机试真题 新系统 2026-04-19 Python&JS 实现【分辨率排序】

MISAYAONE的博客 303

揭秘gti工作原理:C语言如何实现终端汽车动画效果

gti是一款有趣的终端工具,当用户快速输入“git”命令时,它会在终端中显示一辆行驶的小汽车动画,然后再执行实际的git命令。这个看似简单的小工具背后,隐藏着C语言如何操控终端输出和实现动画效果的巧妙技术。 ## 核心功能:从打字错误到创意动画 gti的核心功能是作为git命令的启动器,当用户输入"gti"而不是"git"时,程序会先在终端中显示一段汽车动画,然后再调用真正的git命令执行相应

gitblog_00080的博客 457

SIMULINK开发项目实例 1000 例专栏之第907例--基于新能源与储能系统的场景实例:液流电池在微电网中的动态响应仿真

本文介绍了如何使用Simulink对液流电池在微电网中的动态响应进行建模与仿真。重点包括:1)构建液流电池模型及其特性参数设置;2)配置双向DC-DC变换器调节充放电过程;3)搭建包含分布式能源的微电网系统;4)设计基于SOC的控制器;5)通过仿真分析系统性能指标。该教程提供了完整的建模流程和MATLAB代码示例,帮助用户验证液流电池在微电网中的稳定性和适用性。

xiaoheshang_123的博客 183

比win7运行快的linux发行版,旧电脑扔了浪费!装SliTaz系统,瞬间运行流畅如新机,比win7更快...

原标题:旧电脑扔了浪费!装SliTaz系统,瞬间运行流畅如新机,比win7更快旧电脑如何处理?随着时代的迅速发展,电脑硬件更新换代的频率也在不断地缩短,几乎隔一段时间,就会有新产品出来。而电脑作为一个比较昂贵的产品,大多数人都不会因为有新产品出来,就把自己才使用了一两年的电脑进行更换。不过,电脑本质上还是一个十分精细的产品,随着使用时间的推移,电脑硬件会有所损耗,性能会有影响。而且,还有不断“变大...

weixin_42524610的博客 2458

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win 10 linux shell,实用工具:Win10下的bash shell打开教程

原标题:实用工具:Win10下的bash shell打开教程Macbook可以在终端里直接使用命令行对系统进行各种操作,这个对于习惯了linux系统的人是一个很大的便利。但是macbook高昂的价格和相对的低配在人群中的持有量并不高,所以能在最常见的windows平台使用类似的终端是一个很实用的工具。我们知道Linux下的sed、awk等工具可以极大的方便我们完成某些数据处理任务,下面就给大家介绍...

weixin_29272301的博客 2969

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

如何开启win10内置Linux子程序

WX众号:基因学苑 Q群:32798724 更多精彩内容等你发掘! 自2016年推出之后,windows系统也内置一个 Ubuntu Linux 子系统环境了。现在这样三大主流操作系统都可以使用几乎统一的命令行操作了。现在 Windows 10 系统完美兼容 Linux 应用程序,这并不是通过虚拟机,也不是通过类似cygwin或者wine的方式实现。而是作为windows的一个子程序。这意味着以后...

xxxie_的博客 991

win10安装linux双系统(win10安装linux双系统免U盘)

win10系统下怎么安装XP双系统win10系统下怎么安装XP双? Win7系统是以XP系统为基础的,例如其使用的就是XP的菜单,换句话说它涵盖了XP的所有优越的功能。在一个电脑中有Win7系统的存在,它是不允许比它低级的系统版本运行的。XP比Win7低级,所以,此路行不通。 如何安装双系统win7和win10呢? ...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1275

vs窗体应用linux,使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)...

使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)一、VS的开发环境首先你得安装了vs2019,然后确认下下面三个组件是否存在,如果没有要下载一下。vs2019的安装可参考visual studio2019的安装以及使用。二、创建C#窗体应用程序打开vs可以直接在搜索框输入关键字进行搜索,选择 Windows 窗体应用(.NET Framework)...

weixin_42360953的博客 4623

程序员用linux还是win,如何从程序员的角度看Linux和windows的对比?

本人在Unix SYS5,DOS,Windows3。x,windows9。x/NT 和Linux几个不同时期流行的OS上写过程序。在Linux和windows的对比中,我主要是从一个程序员的角度来看的。一 系统架构的对比1 内核(1) 内核的弹性Linux的内核表现出了高度的可配置性和独立性,主要是完成:IO驱动设备管理,TCP/IP,以及任务调度。Linux的标准内核发布版本有40~50MB,而...

weixin_30856391的博客 921

为什么 Win 叫 Admin, Linux 叫 root?

操作系统的很多细节,其实都带着历史的痕迹。root但无论叫什么,它们都代表系统的最高控制权限。

顺其自然~专栏 220

OpenCode终端智能体框架:可编程的AI技能运行时

终端智能体(Terminal Agent)是一种基于事件驱动、深度集成Shell环境的AI自动化范式,其核心原理是将命令执行流、工作目录、输出文本等作为实时感知信号,交由轻量级脚本进行上下文判断与动作决策。相比传统IDE插件或聊天式终端助手,它具备更强的状态感知能力与低侵入性工程价值,适用于自动化运维、Git工作流增强、CI/CD合规检查等需‘理解终端意图’的场景。OpenCode正是这一范式的开源实现,以JavaScript/TypeScript定义技能(Skill),依托LLM增强逻辑判断,构建终端原生

weixin_33738982的博客 394

Tabby终端:跨平台SSH管理与现代化终端配置全攻略

终端是开发者和运维人员日常工作的核心界面,其效率直接影响生产力。传统终端工具往往功能单一、体验割裂,难以满足现代化工作流需求。随着跨平台开发和远程协作成为常态,一个集成本地Shell与远程连接管理、支持高度定制化的终端工具显得尤为重要。这类工具通过集成SSH客户端、分屏操作、主题定制和插件扩展等特性,能够将终端从基础命令行窗口升级为统一的生产力控制中心。本文以Tabby为例,深入解析如何通过配置现代化终端环境,实现从本地开发到远程服务器管理的无缝衔接,提升SSH连接管理效率和跨平台工作流的一致性。

weixin_33938733的博客 442

win7下linux 双系统安装教程,【系统安装】双系统——Win7下安装linux系统详细步骤...

【preface】html1. 在Win7下安装linux系统以前,若是以前安装过linux系统,可能会遇到须要从新安装的问题。linux由于linux系统是安装在win7系统下的一个系统盘分区中,若是须要卸载linux直接把分区删除就能够了,但仍是须要注意修复启动项的问题。ubuntu2. 另外,安装linux系统有不少方法,这里选择的是U盘启动安装的方式。windows【双系统win7下卸载l...

weixin_28676289的博客 7024
上一篇: (转)typedef用法小结
下一篇: 一个可以计算表达式的计算器
RICH_BABA
博客等级 码龄17年 51粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值