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;
int exit_code;
pid = fork();
if(pid == 0)
{
sleep(3);
exit(5);
}
else if( pid < 0 )
{
fprintf(stderr, "fork failed: %s", strerror(errno));
return -1;
}
wait(&stat); // 等待一个子进程结束
if(WIFEXITED(stat)) // 如果子进程通过 return, exit, _exit 正常结束, WIFEXITED() 返回 true
{
exit_code = WEXITSTATUS(stat);
printf("child's exit_code: %d\n", exit_code);
}
return 0;
}
参考: "man 2 wait"
相关推荐
-
深入C语言内存区域分配(进程的各个段)详解
C语言可执行代码结构 名称 内容 代码段 可执行代码.字符串常量 数据段 已初始化全局变量.已初始化全局静态变量.局部静态变量.常量数据 BSS段 未初始化全局变量,未初始化全局静态变量 栈 局部变量.函数参数 堆 动态内存分配 (1)代码段(text segment):存放CPU执行的机器指令.通常代码段是可共享的,这使得需要频繁被执行的程序只需要在内存中拥有一份拷贝即可.代码段也通常是只读的,这样可以防止其他程序意外地修改其指令.另外,代码段还规划了局部数据所申请的内存空间信息.
-
c++获取进程信息列表和进程所调用的dll列表
复制代码 代码如下: // -----------------------// FileName: // ProcessInfo.h// remarks:// 基于应用层实现,有的进程,如杀软进程等获取不到调用的dll列表.// ----------------------- #pragma once#include <vector> struct ProInfo{ // 保存进程PID unsigned int uPID; // 保存进程名 CString strPr
-
c语言多进程tcp服务器示例
server.h 复制代码 代码如下: #ifndef SERVER_H#define SERVER_H#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include <as
-
C++基于CreateToolhelp32Snapshot获取系统进程实例
本文实例讲述了C++基于CreateToolhelp32Snapshot获取系统进程的实现方法.分享给大家供大家参考.具体方法如下: // GetWinProcess.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> #include <TlHelp32.h> int _tmain(int argc, _TCHAR* argv[]) { HANDLE hProcessSnap = C
-
解析C#中用Process类杀死进程,执行命令的深入分析
c#之process类相关整理一.根据进程名获取进程的用户名?需要添加对 System.Management.dll 的引用 复制代码 代码如下: using System.Diagnostics;using System.Management;static void Main(string[] args){foreach (Process p in Process.GetProcesses()){Console.Write(p.ProcessName);Console.Write("----&
-
C#获取进程和对进程的操作
最近看到一个考试系统,有个功能是用来监视进程的.一旦发现如Communicator.exe这样的违禁软件就立即杀死进程并上报给服务器.我稍 微研究了一下,这个功能实现起来其实很简单.就是使用ManagementObjectSearcher获取进程列表,然后放在一个Collection 里,之后就可以按照自己的逻辑去做了. 复制代码 代码如下: using System;using System.Management; namespace ConsoleApplication3{ class Pr
-
C#控制IE进程关闭和缓存清理的实现代码
复制代码 代码如下: class IEUtil { public static void openIE(string url) { try { //System.Diagnostics.Process.Start(url); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "iexpl
-
c#通过进程调用cmd判断登录用户权限代码分享
复制代码 代码如下: /// <summary>/// 应用程序的主入口点./// </summary>[STAThread]static void Main(){ if (RunCmd("net localgroup administrators").IndexOf(System.Environment.UserName) >= 0) { //顺利执行. } else { //报错提示系统不是管理员用户登录,容易导致
-
C#网络编程基础之进程和线程详解
在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下baike. 进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动.它是操作系统动态执行的基本单元, 在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 线程:是"进程"中某个单一顺序的控制流. 关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到. 二:进程
-
C#获取进程的主窗口句柄的实现方法
通过调用Win32 API实现. 复制代码 代码如下: public class User32API{ private static Hashtable processWnd = null; public delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam); static User32API() { if (processWnd == null) { processWnd = new
-
C#获取Windows进程监听的TCP/UDP端口实例
1.在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP.port.状态和监听的PID.那么可以执行CMD这个进程得到监听的端口号信息,C#代码如下: 复制代码 代码如下: //进程id int pid = ProcInfo.ProcessID; //存放进程使用的端口号链表 List<int> ports = new List<int>(); Process pro = new Process(); pro.Sta
随机推荐
- IOS开发中加载大量网络图片优化方法
- asp.net session的使用与过期实例代码
- FLEX 仿Google联想框效果
- ASP.NET2.0中用Gridview控件操作数据的代码
- CentOS 5.4+OpenVZ+Vtonf实现VPS服务器的方法
- js显示动态时间的方法详解
- JavaScript 继承详解(五)
- 详谈symfony window下的安装 安装时候出现的问题以及解决方法
- Android组件间通信--深入理解Intent与IntentFilter
- php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
- php查询mssql出现乱码的解决方法
- javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
- 探索PowerShell(五) PowerShell基础知识
- jQuery中:empty选择器用法实例
- 微信小程序 页面跳转如何实现传值
- JDK源码之PriorityQueue解析
- 两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)
- Java8中的default方法详解
- 详解springMVC容器加载源码分析
- 详细解析命令行的getopt_long()函数