C# 获取进程退出代码的实现示例

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

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

static void Main(string[] args)
    {
      Environment.Exit(-100);
    }

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

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

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

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

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

private Process _process;

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

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

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

var process = Process.GetProcessById(控制台进程);

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

System.ArgumentException:“ID 为 xx 的进程当前未运行。"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c#进程之间对象传递方法

    1. 起源 KV项目下载底层重构升级决定采用独立进程进行Media下载处理,以能做到模块复用之目的,因此涉及到了独立进程间的数据传递问题. 目前进程间数据传递,多用WM_COPYDATA.共享dll.内存映射.Remoting等方式.相对来说,WM_COPYDATA方式更为简便,网上更到处是其使用方法. 而且Marshal这个静态类,其内置多种方法,可以很方便实现字符串.结构体等数据在不同进程间传递. 那么,对象呢?如何传递? 2.序列化 想到了,Newtonsoft.Json.dll这个神器.

  • C#获取所有进程的方法

    在使用C#进行相关编程的时候,有时候我们需要获取系统相关的进程信息.那么在C#中如何获取系统的所有进程那?下面请跟小编一起来操作. 1.首先新建一个控制台程序,这里主要是为了方便演示,控制台程序相对比较简单,如下图所示: 2.然后导入进程相关的操作类,主要是diagnostics,如下图所示 3.然后我们调用Process类的GetProcesses方法,获取系统所以进程,注意是一个数组,图下图所示: 4.我们来看一下Process的相关解释说明,把鼠标放上去,看到如下图所示的内容 5.接下来我

  • C#实现强制关闭当前程序进程

    /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> /// <param name="command"></param> /// <returns></returns> public static string RunCmd(string command) { //實例一個Process類,啟動一個獨立

  • C#获取任务栏显示进程的方法

    本文实例讲述了C#获取任务栏显示进程的方法.分享给大家供大家参考.具体实现方法如下: private static void getWindowsInfo() { try { Process[] MyProcesses = Process.GetProcesses(); string[] Minfo = new string[6]; foreach (Process MyProcess in MyProcesses) { if (MyProcess.MainWindowTitle.Length

  • C#实现关闭其他程序窗口或进程代码分享

    在进行winform开发过程中有时候会需要关闭其他程序或者关闭进程,以前写过一篇相关介绍的文章,今天有同事问起来,于是在次翻出来和大家分享一下. 下面介绍我所知的两种方法,应该对大家有帮助,如果有朋友知道其他的方法,谢谢共享一下. 方法1 ProcName 需要关闭的进程名称 private bool closeProc(string ProcName) { bool result = false; System.Collections.ArrayList procList = new Syst

  • C#结束Excel进程的步骤教学

    程序中,系统自带的回收功能无法马上结束Excel进程,需要自己编写程序. 1.项目中,引用添加office COM组件 2.引用接口 3.在程序中 添加代码 [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID); 4.停止Excel应用,这一步不会马上结束Excel进程,但是需要写 5.立即结

  • C#中进程的挂起与恢复

    1. 源起: 仍然是模块化编程所引发的需求.产品经理难伺候,女产品经理更甚之~:p 纯属戏谑,技术方案与产品经理无关,芋头莫怪! VCU10项目重构,要求各功能模块以独立进程方式实现,比如:音视频转换模块,若以独立进程方式实现,如何控制其暂停.继续等功能呢? 线程可以Suspend.Resume,c#内置的Process没有此类方法,咋整? 山穷水尽疑无路,柳暗花明又一村.情到浓时清转薄,此情可待成追忆! 前篇描述了进程间数据传递方法,此篇亦以示例演示其间控制与数据交互方法.  2.未公开的AP

  • C# 获取进程退出代码的实现示例

    我需要写一个程序,让这个程序知道另一个程序是否正常退出,于是就需要获取这个进程的退出代码 在程序如果需要手动退出,可以设置当前的退出代码 static void Main(string[] args) { Environment.Exit(-100); } 这时的程序运行就退出,同时退出的代码就是 -100 这和 C 语言的在 main 函数返回值一样 在 C# 如果想要实现 C 语言的 main 函数的返回值,是通过调用 Environment.Exit 方法 那么其他程序如何拿到这个程序的退

  • win2003 补丁 iis 应用程序池 无法启动 进程退出代码是 0xffffffff

    windows 2003 补丁 KB982666 可能会导致 iis 应用程序池 无法启动 进程退出代码是 0xffffffff 卸载KB982666 既可解决问题 网上传统解法二: IIS 500错误报"进程退出代码是 '0xffffffff'"的处理方案 (此故障只针对windows 2003系统) 故障现象: 1.IIS里面所有的网站访问都是500 错误.进程池启动后,访问服务器的网站,进程池马上自动关闭. 2.系统日志报错:"应用程序池 'AppPool #1' 被自

  • Linux C 获取进程退出值的实现代码

    如以下代码所示: 复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <errno.h>int main(int argc, char *argv[]){ pid_t pid; int stat; in

  • IDEA进程已结束,退出代码-1073741819 (0xC0000005)的bug

    由于昨天要写的文章没有写完,于是今天早上我四点半就"自然醒"了,心里面有事,睡觉也不安稳.洗漱完毕后,我打开电脑,正襟危坐,摆出一副要干架的态势,不能再拖了. 要写的文章中涉及到一串代码,关于 Undertow 的一个入门示例,贴出来大家看一下. public class UndertowTest { public static void main(final String[] args) { Undertow server = Undertow.builder() .addHttpL

  • vue获取token实现token登录的示例代码

    使用token做登录验证的思路大致如下: 1.在第一次登录的时候前端调用后端的接口,把用户名和密码传给后端. 2.后端收到请求,验证用户名和密码,验证成功后,返回给前端一个token值. 3.前端收到后端传给的token值,将token存储在本地 loaclStorage和vuex中.(本次项目用的是vue框架,使用了vuex全局状态管理) 4.前端每次路由跳转,就判断localStorage中是否有token,如果没有就跳转登录页面,如果有就跳转到相应的页面. 5.分装一公用的请求接口方法,每

  • Java异常退出条件的判断示例代码

    无论是功能性代码还是算法性代码,程序都是一系列流程的合集 既然是流程就分为:一般流程和异常流程: 一般流程保证了基本功能: 异常流程则是对程序稳定性的保证,不能因为一些非法输入,项目就挂了: 注意,布尔表达式的先后顺序,有时不可以交换 if (null == instance || instance.isEmpty()) 0. 常见异常退出条件 参数为空: 表示长度,表示索引的整型为负数,或者超出待索引数组或容器的范围: 1. String 的 startsWith 函数 首先来看 String

  • Java获取电脑真实IP地址的示例代码

    /** * @author yins * @date 2018年8月12日下午9:53:58 */ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; /** * 获取本地真正的IP地址,即获得有线或者无线WiFi地址. * 过滤虚拟机.蓝

  • vue使用exif获取图片旋转,压缩的示例代码

    <template> <div> <input type="file" id="upload" accept="image" @change="upload" /> </div> </template> <script> export default { data() { return { picValue:{}, headerImage:'' }; },

  • Python获取B站粉丝数的示例代码

    要使用代码,需要安装Python 3.x,并且要安装库,在cmd输入pip install requests json time 复制代码,修改最上方变量改成你自己的UID,保存为xxx.py,运行就可以了 用于学习了解的核心代码: import requests import json bilibili_api = requests.get("http://api.bilibili.com/x/relation/stat?vmid=1") # 访问网址,数据存到变量,1是用户UID

  • Python进程,多进程,获取进程id,给子进程传递参数操作示例

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过socket套接字实现进程间通信,可以通过硬盘(文件)实现进程通信,也可以通过队列(Queue)实现进程通信) 子进程会拷贝复制主进程中的所有资源(变量.函数定义等),所以子进程比子线程耗费资源. demo.py(多进程): import threading # 线程 import time impo

随机推荐