首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C#中调用进程时,StandardError显示,但StandardOutput不显示

在C#中调用进程时,StandardError用于显示进程的错误输出,而StandardOutput用于显示进程的标准输出。如果在调用进程时,StandardError显示而StandardOutput不显示,可能是由于以下几个原因:

  1. 进程的标准输出为空:进程可能没有产生任何标准输出,因此StandardOutput不显示任何内容。这可能是由于进程的逻辑或参数设置导致的。
  2. 进程的标准输出被重定向到其他地方:在调用进程时,可以通过重定向标准输出来将输出发送到其他地方,如文件或其他流。如果StandardOutput不显示,可能是因为进程的标准输出被重定向到其他地方而不是控制台。
  3. 进程的标准输出被错误处理程序捕获:在调用进程时,可以设置错误处理程序来捕获进程的错误输出。如果StandardOutput不显示,可能是因为错误处理程序捕获了进程的标准输出并进行了处理。

为了解决这个问题,可以尝试以下几个步骤:

  1. 确保进程的标准输出不为空:检查进程的逻辑和参数设置,确保其产生了标准输出。
  2. 检查是否有重定向标准输出:查看调用进程的代码,确认是否对标准输出进行了重定向。如果有,可以尝试将其重定向回控制台或其他需要的地方。
  3. 检查错误处理程序:如果设置了错误处理程序来捕获进程的错误输出,可以检查处理程序的逻辑,确认是否对标准输出进行了处理。如果需要显示标准输出,可以相应地修改错误处理程序的逻辑。

总结起来,在C#中调用进程时,如果StandardError显示而StandardOutput不显示,需要检查进程的逻辑、参数设置、标准输出是否被重定向以及错误处理程序是否捕获了标准输出。根据具体情况进行调整,以确保标准输出能够正确显示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【.net 深呼吸】启动一个进程并实时获取状态信息

类型是Writer,为啥是writer呢,因为这个标准流是相对于被启动的进程而言的,流动方向是从调用方流向目标进程,所以是写入数据,即将内容发送到目标进程StandardOutput——输出流。...即目标进程对外输出的内容,流动方向是从目标进程流向调用方,因此,对调用者来说,是读取,故其类型为Reader。 StandardError——和输入流差不多,只是它专用于输出错误。...综上所述,只要启动新进程后,从StandardOutput属性得到一个StreamReader对象,然后建立一个循环,不断地从流读取内容,就能够实时获得最新状态了。...如果Flush的话,写入的内容会放在缓冲区,直接流关闭或执行Flush才会真正发送到标准流上,所以,每写完一次都调用一下Flush方法,确保调用方能够实时收到信息。...我用了个进度条来实时显示进度,而Process类的OutputDataReceived事件是异步引发的,要在事件处理更新进度条,需要借助Dispatcher来代理调用

96560
  • 如何将组件启动服务封装为系统服务

    前言:当我们使用tar包的方式,安装某些组件后,启动通常需要再安装目录的/bin目录进行相关服务的启动。...如果更新配置或重启机器后再进行服务启动,就需要进到组件安装目录下或通过绝对路径的方式进行相关启动命令的调用。...本次我们使用的是Linux系统的systemctl命令,将我们安装的组件服务,注册为systemctl管理的系统命令。...ExecStart:具体的启动命令,如果单独配置命令,系统无法解析,就需要添加绝对路径,便于systemctl管理能够找到该命令。 StandardOutput:服务运行时日志的输出路径。...StandardError:服务运行时错误日志的输出路径。这里将错误日志与正常运行日志分开主要是为了当服务报错,排查问题方便。

    47230

    C#进程调用FFmpeg操作音视频

    对于.NET开发者来说,C#提供了丰富的库和框架来处理各种编程任务,直接操作音视频文件可能不是它的强项。幸运的是,我们可以利用C#调用FFmpeg的命令行工具来实现音视频处理。...本文将详细介绍如何在C#通过进程调用FFmpeg来操作音视频文件。引言FFmpeg是一个完整的、跨平台的解决方案,用于处理视频和音频数据。...因此,对于需要进行音视频处理的C#应用程序,调用FFmpeg是一个实用的解决方案。FFmpeg的安装和配置开始之前,你需要确保FFmpeg已经安装在你的系统上,并且可以命令行访问。...C#调用进程的基础知识C#,可以使用System.Diagnostics命名空间中的Process类来启动和控制进程。...我们构建了FFmpeg的命令行参数,并使用Process类启动FFmpeg进程。我们还重定向了标准输出,以便在控制台中显示FFmpeg的输出信息。

    66800

    关于 Linux 中使用 systemd-run 创建临时 cgroup 限制 ad-hoc 资源消耗的一些笔记

    slice 并不包含进程,但会组建一个层级,并将 scope 和 service 都放置其中。真正的进程包含在 scope 或 service 。...命令如果有输出,会直接打印出来,即换句话讲,它是同步的,直接从 systemd-run 进程启动。...systemd-run -p MemoryLimit=5M --unit=name --slice=slice_name command 当指定为 scope ,默认是作为 service 存在...它们从 systemd 进程中被调用 --unit=name 为单元生成的名字 --slice=slice_name: 为生成的 cgroup 层级的名字 -p MemoryLimit=5M 即向对应单元传递一个内存限制的参数...] StandardInput=tty # /run/systemd/system/bash-limit.service.d/50-StandardOutput.conf [Service] StandardOutput

    76330

    使用Deepin构建内网网盘

    第二步 将Cloudreve压缩包放在你想要的数据盘,我选择的是D盘,我建议放在系统盘之中,因为比较混杂,到时候所有的文件都将储存在本地里(如果你愿意储存到云端可以配置其他的储存方式,储存本地速度也是很快的...控制台有写 别问我为什么提醒你,因为第二次启动他就不会显示了,别的地方还看不了 讲道理它会显示你自己的内网ip 我的内网ip是192.168.31.30 以我的内网ip为例子,浏览器输入192.168.31.30...=null StandardError=syslog [Install] WantedBy=multi-user.target 这样的比较直接,但是我不会退出vim编辑器….我就提供第二种方法 方法二...=null StandardError=syslog [Install] WantedBy=multi-user.target 第四步 首先关闭正在运行Cloudreve的Linux命令控制台 然后执行以下命令...若需阅读更多内容请查看官方文档 查看链接 Windows Windows的话下载之后解压就直接可以用了 但是Windows没法守护进程,所以必须挂在后台上.

    99130

    自动更新所有 Git 仓库

    本地添加了很多开源项目,我写了一个脚本可以每天自动从开源项目更新代码 我写开源项目的时候,需要写之前更新项目,但是每次更新都需要等很久,能否可以自动更新开源项目的代码,这样每次需要更新的就很少,...= true, //重定向标准错误输出 CreateNoWindow = true, //不显示程序窗口 StandardOutputEncoding...这里使用&是批处理命令的符号,表示前面一个命令不管是否执行成功都执行后面(exit)命令,如果执行exit命令,后面调用ReadToEnd()方法会假死 //同类的符号还有&&...(); //Console.WriteLine(output); output += p.StandardError.ReadToEnd();...// line = reader.ReadLine(); //} p.WaitForExit(); //等待程序执行完退出进程

    66420

    winfrom – 重定向控制台的输入输出

    控制台环境下,我们可以执行很多指令,比如“dir”,”ipconfig /all”,”ping”等。我们今天尝试做个图形化的界面,同样可以执行执行,并将执行的结果在winform窗体里显示。...如下图: 如上图所示,该窗体类似打开了一个控制台,在下方的文本框输入 “dir”指令,会在上面提示区显示执行后的结果的内容。 这个过程是怎么实现的呢?...我们的程序执行时,我们将 指令(比如上面输入的dir指令)发送给 这个进程,并且将这个进程的输出结果读取出来,显示我们的winform窗体界面上。...再调用Process.Start(startInfo)方法,来启动它。...那么,启动了一个重定向后的进程后,我们如何读取输出的内容,错误信息,和输入数据呢?

    1.2K30

    WPF桌面端开发-音视频录制(使用ffmpeg.exe实现)

    前言本文只考虑Windows下使用FFmpeg进行桌面、麦克风、扬声器同时录制的实现方式,Mac下会有些许差异。之前的FFmpeg有很多问题,现在随着版本的更新基本上都可以解决了,可以使用在项目中。...录制桌面使用GDI方式的时候如果系统缩放不是100%,多屏录制的时候录制不全。这些问题我们一一解决:前两个问题是无法解决的。...process.StandardError.EndOfStream) { var line = process.StandardError.ReadLine();...return defaultLoopbackCaptureDevice.AudioEndpointVolume.MasterVolumeLevelScalar; }这个方法主要用于麦克风和扬声器混音,...判断FFmpeg是否安装这种方式推荐使用,添加环境变量不能立即生效 /// /// 判断FFmpeg是否安装并添加环境变量 /// ///

    67520

    .NET Core 跨平台执行命令、脚本

    一.前言 我们可能会遇到需要在程序执行一些系统命令,来获取一些信息;或者调用shell脚本。.NET Core 目前已经可以跨平台执行,那么它如何跨平台执行命令呢,请看下面的讲解。...arguments:进程启动传递给应用程序的命令行参数。 (2)主要属性 CreateNoWindow:指示是否新窗口中启动进程。...UseShellExecute:指示是否使用操作系统shell启动进程。如果启动进程使用shell,则为true; 如果应该直接从可执行文件创建进程,则为false。 默认值是true。...MachineName:获取运行关联进程的计算机的名称。 SessionId:获取关联进程的终端服务会话标识符。 StandardError:获取读取应用程序错误输出的流。...CloseMainWindow:通过向其主窗口发送关闭消息来关闭具有用户界面的进程。 Kill:立即停止关联的进程。 Refresh:放弃已经进程缓存的关联进程的任何信息。

    2K20

    调用CMD命令的一个.NET工具类(MyWindowsCmd)

    功能大概描述一下如果直接StandardOutput.ReadToEnd()这种方法,有很多限制 这类方式必须把命令全部执行一次写入并标记为exit,而且返回内容的获取会一直等待,如果在主线程里使用会导致假死...若遇到执行时间长,同时会在执行输出进度的命令,则明显不适应 对于部分特殊字符这类方法会直接中断一直等待(特别是对包含asc颜色等样式的输出) 本文的工具类解决以上问题,使用委托订阅的方式即时的输出执行过程...前一个类StreamAsynRead是用于读取cmd进程返回流IO 后面的MyWindowsCmd为cmd主要功能 1 using System; 2 using System.Collections.Generic...get { return isStart; } 220 } 221 222 /// 223 /// 获取或设置获取内容回调是否丢弃...false; 286 } 287 } 288 289 /// 290 /// 等待执行完成(同步方法,请勿主线程调用

    76910

    温故而知新:查看端口占用情况以及DOS的管道操作重定向操作

    示例: c:\> dir /w > dir_tree.txt 该命令将把c:\(即c盘根目录)下的目录和文件名以横向方式列出来,最终结果将生成 c:\dir_tree.txt 注:我通常用它来输出项目的目录结构...app_dir_tree.txt ">>":与">"基本相同,区别在于不会删除文件的原有内容(即追加文本) c:\> dir /w >> dir_tree.txt 大家可以把这一行命令多执行几次,然后跟">"操作符对比 注:用c#...代码同样可以指定重定向,比如下面的代码,演示了如何调用ping命令,并得到返回结果,而且不弹出DOS运行窗口 Process p = new Process(); p.StartInfo.FileName...p.StandardInput.WriteLine("ping www.cnblogs.com"); p.StandardInput.WriteLine("exit"); string pingReturn = p.StandardOutput.ReadToEnd...netstat命令可以查看端口使用情况,里面有很多参数,其中有几个非常有用的: -a  列出所有连接和监听的端口 -o  列表每个连接对应的进程ID -n  以数字形式显示所有地址和端口号 现在就可以用

    1.7K90

    Android搭建Cloudreve私人云盘

    然后打开busybox 会申请root权限,请给予 然后点击下面的Install 等待安装完成即可 然后打开Linux Deploy 点击左上角,进入设置 推荐勾选CPU唤醒和锁定WiFi 然后PATH...里面填入我们busybox安装的路径 默认是/system/xbin 如果你安装busybox自己选择了路径,请填入你的路径即可 其他保持默认即可 然后我们开始配置操作系统 我原来测试了一下Ubuntu...JuiceSSH 下载地址: http://t.cn/A6ZIyre6 如果你是Windows电脑,推荐XShell 个人版下载地址: http://t.cn/A6ZIMuVu 对应使用教程百度即可,这里阐述了.../cloudreve 当屏幕显示这个的时候代表你已经启动成功啦 因为我已经启动过了,大家第一次启动会显示管理员账户密码,请保存下,如果忘记了需要删除当前目录的db数据库文件。...=null StandardError=syslog [Install] WantedBy=multi-user.target 然后Ctrl+o保存Ctrl+x退出 然后配置进程 更新配置 systemctl

    5.2K10

    树莓派搭建私有云Cloudreve

    JuiceSSH 下载地址: http://t.cn/A6ZIyre6 如果你是Windows电脑,推荐XShell 个人版下载地址: http://t.cn/A6ZIMuVu 对应使用教程百度即可,这里阐述了.../cloudreve 当屏幕显示这个的时候代表你已经启动成功啦 因为我已经启动过了,大家第一次启动会显示管理员账户密码,请保存下,如果忘记了需要删除当前目录的db数据库文件。...我们得设置一下进程守护 (这里懒得打字了,引用一下官方文档吧) 编辑配置文件 nano /usr/lib/systemd/system/cloudreve.service 粘贴以下内容然后文内的 PATH_TO_CLOUDREVE...PATH_TO_CLOUDREVE ExecStart=/PATH_TO_CLOUDREVE/cloudreve Restart=on-abnormal RestartSec=5s KillMode=mixed StandardOutput...=null StandardError=syslog [Install] WantedBy=multi-user.target 然后Ctrl+o保存Ctrl+x退出 然后配置进程 更新配置 systemctl

    5.8K30
    领券