前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C# 获取进程退出代码

C# 获取进程退出代码

作者头像
林德熙
发布于 2022-08-04 06:02:08
发布于 2022-08-04 06:02:08
1.6K00
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

我需要写一个程序,让这个程序知道另一个程序是否正常退出,于是就需要获取这个进程的退出代码

在程序如果需要手动退出,可以设置当前的退出代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        static void Main(string[] args)
        {
            Environment.Exit(-100);
        }

这时的程序运行就退出,同时退出的代码就是 -100 这和 C 语言的在 main 函数返回值一样

在 C# 如果想要实现 C 语言的 main 函数的返回值,是通过调用 Environment.Exit 方法

那么其他程序如何拿到这个程序的退出代码?

需要其他程序先拿到这个程序的进程,如果是在其他程序启动这个程序,那么通过 Process 就可以拿到

如我有两个程序,一个是控制台程序,这个控制台程序是 控制台.exe 还有一个 WPF 程序,通过 WPF 程序打开控制台程序,然后拿到控制台程序的退出代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        private Process _process;

        public MainWindow()
        {
            InitializeComponent();
            var process = new Process {StartInfo = new ProcessStartInfo("控制台.exe")};
            _process = process;
            process.Start();
        }

在 WPF 程序的按钮按下尝试通过 _process.ExitCode 请看代码

通过这个方法就可以拿到启动的进程的返回值,如果不是在 WPF 启动控制台程序,也可以在进程退出之前使用下面代码拿到进程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var process = Process.GetProcessById(控制台进程);

如果在进程退出之后才尝试去获取进程就会出现下面代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.ArgumentException:ID 为 xx 的进程当前未运行。”
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C#/.NET 使用 git 命令行来操作 git 仓库
我们可以在命令行中操作 git,但是作为一名程序员,如果在大量重复的时候还手动敲命令行,那就太笨了。
walterlv
2023/10/22
1.3K0
C#/.NET 使用 git 命令行来操作 git 仓库
【.net 深呼吸】启动一个进程并实时获取状态信息
地球人和火星人都知道,Process类既可以获取正在运行的进程,也可以启动一个新的进程。在79.77%应用场合,我们只需要让目标进程顺利启动就完事了,至于它执行了啥,有没有出错,啥时候退出就不管了。 但是,在某些情况下,启动新进程后,还希望能向目标进程传送数据,或者实时读取来自新进程的信息。比如,启动一个安装程序,安装程序会向标准流写入安装进度,然后调用方可以从标准流中读取进度,以达到实时监控安装进度的目的。 Process类公开三个标准流属性: StandardInput——输入流。类型是Writer,为
逸鹏
2018/04/11
9990
【.net 深呼吸】启动一个进程并实时获取状态信息
C#学习笔记——启动其他进程
1 启动一个独立进程,需要用到的命名空间是:using System.Diagnostics; 进程类是 Process ,进程的相关参数信息类是 ProcessStartInfo
vv彭
2021/06/10
9090
【.NET】通过代码实现导出进程的dump文件和内存分析
因为需要获取进程的processID,所以接着上次写的识别.NET进程的控制台程序【参考检测.NET CORE+和.NET FX进程有关那个文章】,直接在这上面新增功能。
Wesky
2024/08/13
2250
【.NET】通过代码实现导出进程的dump文件和内存分析
WPF桌面端开发-音视频录制(使用ffmpeg.exe实现)
本文只考虑在Windows下使用FFmpeg进行桌面、麦克风、扬声器同时录制的实现方式,Mac下会有些许差异。
码客说
2023/08/10
8130
C#的Process类调用第三方插件实现PDF文件转SWF文件
彭泽0902
2018/01/04
1.7K0
TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。
郑子铭
2025/01/13
2710
TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
winfrom – 重定向控制台的输入输出
windows 系统控制台里给我提供很方便的运行的程序的方式。类似老式的dos环境。但是这种控制台的交互风格还是非常方便的。即便在现在的情况下,因为有些操作不使用图形化的界面反而会比较快捷。在控制台环境下,我们可以执行很多指令,比如“dir”,”ipconfig /all”,”ping”等。我们今天尝试做个图形化的界面,同样可以执行执行,并将执行的结果在winform窗体里显示。如下图:
全栈程序员站长
2022/07/05
1.3K0
winfrom – 重定向控制台的输入输出
C# 使用相同权限调用 cmd 传入命令
如果想要用相同的权限运行一个程序,可以使用 ProcessStartInfo 的方法
林德熙
2018/09/19
1.6K0
WPF 通过多进程实现异常隔离的客户端
当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现。如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程。WPF 元素无法跨进程传输,但是窗口句柄(HWND)可以,所以可以将 WPF 元素包装成 HWND,然后通过进程间通信将插件传输到客户端中,从而实现插件加载。
沙漠尽头的狼
2021/12/01
1.4K0
WPF 通过多进程实现异常隔离的客户端
C#进程调用FFmpeg操作音视频
在多媒体应用开发中,音视频处理是一个复杂且关键的领域。FFmpeg是一个强大的开源库,用于处理视频和音频数据。它提供了命令行工具,可以执行视频转换、编码、解码、流处理等多种任务。对于.NET开发者来说,C#提供了丰富的库和框架来处理各种编程任务,但直接操作音视频文件可能不是它的强项。幸运的是,我们可以利用C#调用FFmpeg的命令行工具来实现音视频处理。本文将详细介绍如何在C#中通过进程调用FFmpeg来操作音视频文件。
Michel_Rolle
2024/10/10
2.8K0
C#重定向 进程调用 WinForm多线程
需求: 一个以前的控制台程序,由于命令行方式对用户不够友好,所以加个界面调用控制台程序,但是以前的控制台输出信息就要重定向到新的界面上,要不用户不知道程序信息更不好。
井九
2024/10/12
1000
[C#]使用Process的StandardInput与StandardOutput写入读取控制台数据
本文介绍了如何使用C#中的Process类来读取控制台输出,并通过实例代码进行了详细的讲解。主要包括了创建Process实例、重定向标准输入输出流、读取控制台输出、向控制台输入数据等方面的内容。
CNXY
2017/12/25
3.2K0
[C#]使用Process的StandardInput与StandardOutput写入读取控制台数据
加强版在国内分发 UWP 应用正确方式 通过win32安装UWP应用
几乎所有国内的 UWP 开发者都知道,在国内开发 UWP 应用最大的问题不在于那么多系统的适配和不断修改的 API 接口,而是用户根本无法下载安装应用。在国内除非能掌握入口,否则想要将 UWP 开发应用在商业团队是很难的。刚好我所在的团队能将硬件设备直接给到用户,此时预装的系统里面就可以带上自主开发的 UWP 应用,解决了用户无法在应用商店安装应用的坑。但是大多数的团队都不能这样做,同时我的团队如果只是依靠硬件设备预装,那么会限制用户量。本文告诉大家如何使用传统的方法,将 UWP 作为 win32 应用安装包方法分发给用户安装
林德熙
2020/03/12
1.1K0
WPF 封装 dotnet remoting 调用其他进程
在 WPF 使用RPC调用其他进程 已经告诉大家调用的原理,但是大家可以看到,如果自己写一个框架是比较难的。
林德熙
2022/08/04
9240
WPF 封装 dotnet remoting 调用其他进程
在 WPF 使用RPC调用其他进程 已经告诉大家调用的原理,但是大家可以看到,如果自己写一个框架是比较难的。
林德熙
2018/09/19
8710
启动管理员进程
当我们运行一个程序的时候有时需要提升到管理员权限,但是默认的C#程序的运行权限是当前用户的权限,那么怎么提升这个启动权限呢?
用户1175783
2019/09/18
8390
C#多线程(4):进程同步Mutex类
Mutex 中文为互斥,Mutex 类叫做互斥锁。它还可用于进程间同步的同步基元。
痴者工良
2021/04/26
1.3K0
UI自动化 --- 微软UI Automation
无论是接口自动化测试,还是UI自动化测试,目的就是为了提高产品的稳定性,保证用户体验。
Niuery Diary
2023/10/22
1.3K0
UI自动化 --- 微软UI Automation
父进程退出时如何确保子进程退出?
子进程退出的时候,父进程能够收到子进程退出的信号,便于管理,但是有时候又需要在父进程退出的时候,子进程也退出,该怎么办呢?
编程珠玑
2019/09/02
12.7K0
推荐阅读
相关推荐
C#/.NET 使用 git 命令行来操作 git 仓库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验