当前位置:  编程技术>c/c++/嵌入式

使用代码验证linux子进程与父进程的关系

    来源: 互联网  发布时间:2014-10-23

    本文导语:  代码如下:/********  basic.c ********/#include "basic.h" pid_t Fork(void){    pid_t pid = fork();    if (pid < 0) {        fprintf(stderr, "Fork error: %sn", strerror(errno));        exit(0);    }     return pid;} 代码如下:**********  basic.h  *********** #i...

代码如下:

/********  basic.c ********/
#include "basic.h"

pid_t Fork(void)
{
    pid_t pid = fork();
    if (pid < 0) {
        fprintf(stderr, "Fork error: %sn", strerror(errno));
        exit(0);
    }

    return pid;
}

代码如下:

**********  basic.h  ***********

#ifndef __CSAPP_BASIC_H
#define __CSAPP_BASIC_H

#include
#include
#include
#include
#include
#include
/* function definition concerned with basic.c */
pid_t Fork();

#endif

代码如下:

*******  fork.c  *********

#include "basic.h"

int main()
{
    int pid = Fork();
    int x = 2;

    if (pid == 0) {
        printf("child: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), ++x);
        sleep(3);

        printf("child: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), ++x);
        exit(0);
    }

    printf("parent: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), --x);

}

通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。  运行 ./fork

可以看出父进程首先退出,退出前child的PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。


    
 
 

您可能感兴趣的文章:

  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • 怎么打开一个进程并得到这个进程内存使用的信息?
  • fork一个子进程后在打开一个文件,如何在子进程中使用这个打开的文件描述符号
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 如何查看某个进程的cpu使用和内存使用情况????
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • 如何使用另外进程的socket
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。 iis7站长之家
  • 子进程用_exit退出,父进程为什么就不能让stdout使用缓存呢?
  • AIX系统中不使用lsof,还有没有其他命令可以知道端口是被那个进程使用
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • 请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
  • 计算进程的内存使用量应该使用/proc/self/statm哪几个量相加表示?
  • 怎么查一个特定进程使用的端口号啊
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 有人研究 或者 使用 实时进程 吗?请进来好吗?
  • 进程对串口读写时使用互斥机制吗?
  • 请问在UNIX上如何看一个进程的内存使用情况?
  • 使用Linux/UNIX的系统用户进行PHP用户登录验证
  • jquery内置验证(validate)使用方法示例(表单验证)
  • php使用filter过滤器验证邮箱 ipv6地址 url验证
  • 下载的linxu如何使用md5文件进行验证?
  • 使用python装饰器验证配置文件示例
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • JavaScript 使用正则表达式进行表单验证的示例代码
  • jquery 表单验证插件Parsley.js使用说明
  • c#使用正则表达式匹配字符串验证URL示例
  • PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
  • ThinkPHP验证码使用简明教程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • Django项目使用示例步骤及代码
  • 使用 C# 动态编译代码和执行的代码
  • TinyXML(c++下操作xml的库)介绍,下载地址及使用代码举例
  • 如何锁定源代码,一次只能有一个线程使用?
  • 使用libpcap实现抓包程序的步骤及代码示例
  • 如何使gcc后的代码,使用相对路径存在调试信息?
  • jquery代码-如何正确使用ToggleClass
  • jquery代码-如何使用多个属性来进行过滤
  • VIM的使用,代码缩进的问题
  • jquery代码-如何使用jQuery来解析xml
  • 如何使用shell文件实现linux环境下的挂载功能,具体代码!!
  • 使用xenocode代码混淆加密的操作步骤
  • 请问如何使用Vim,使其可以在编写C代码时自动缩进
  • 用Jbuilder3 遇到问题不能运行把可疑代码注掉后可以运行但是重新使用可疑代码时又可以运行了多次重复都是如此
  • jquery代码-如何使用.siblings()来选择同辈元素
  • 使用正则表达式替换表情符号核心代码
  • 欢迎使用、加入Arrow项目开发--一个自动化代码生成工具
  • 使用gdb时为什么调用list不出现代码
  • 想使用Kliyx把Delphi写的代码编译为Linux程序, 装什么Linux什么版本最好?请明人指教,谢谢!?
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3