当前位置:  技术问答>linux和unix

设置一个全局变量保存进程id,为何在另一个函数中kill的时候id号有变化?

    来源: 互联网  发布时间:2017-05-26

    本文导语:  定义了一个全局变量 pid_t childs_pid; 在函数test中获取子进程id号 void test(void) {     pid_t pid;     char sPlay[100]="play ";     pid = fork();     if(pid == 0)     {     childs_pid = getpid();     printf("childs_pid = %dn...

定义了一个全局变量 pid_t childs_pid;
在函数test中获取子进程id号
void test(void)
{
    pid_t pid;
    char sPlay[100]="play ";
    pid = fork();
    if(pid == 0)
    {
    childs_pid = getpid();
    printf("childs_pid = %dn",childs_pid);
    if((pid=fork())==0)
    {
        system(sPlay);
exit(0);
    }
    if (waitpid(pid, NULL, 0) != pid) 
            {   
                fprintf(stderr,"Waitpid error!n");   
                exit(-1);   
            }
            exit(0);
}
}
打印出来得到childs_pid = 995
然后在另外一个函数stop_test中kill
void stop_test(void)
{
    pid_t pid;
    char cmd[100];
    sprintf(cmd,"kill -9 %d",childs_pid);
    printf("kill childs_pid %dn",childs_pid);
    system(cmd);
}
打印出来的是kill childs_pid 0
为什么childs_pid发生了变化,按正常来讲childs_pid应该等于995,此处为什么变为0了?求指点

|
在一个线程中吗,或者不同线程使用了同步手段

|
stop_test 不一定在 test 后被执行

|
fork了两次啊,child_pid在子进程中就是0嘛

    
 
 

您可能感兴趣的文章:

  • debian下用脚本设置 全局变量的问题
  • 高手们,请问我在linux中装了jdk,但现在不知道该如何设置全局path啊!!!!!!!!
  • 笨问题:JAVA如何设置全局变量,要在所有的类和整个程序中有效
  • unix shell怎么设置全局变量
  • asp.net 全局变量的设置与读取的方法
  • 第三方包jintellitype实现Java设置全局热键
  • Linux下如何查看,设置环境变量并立即生效
  • linux下到底如何设置环境变量?在哪设置?详细具体点
  • 菜鸟问题:如何设置application变量和session变量?
  • linux 下设置环境变量 使用了setenv 和putenv 在程序结束以后 发现变量又变回去了
  • 环境变量设置设置与显示不一致
  • 超级新手: 在98或winme下设置jdk时怎么设置系统环境变量PATH??
  • 一个简单的环境变量的设置问题
  • Linux 将自带的jdk设置成环境变量
  • 关于ubuntu下的JDK环境变量设置
  • 环境变量设置无效
  • 一个关于环境变量设置的问题
  • 如何让本次设置的环境变量在重启动后仍然有效??
  • 请问如何在shell脚本中检测一个环境变量是否已经设置
  • ACE 如何在linux下设置环境变量
  • 怎么才能设置"永久的环境变量?
  • 请问JRUN的环境变量怎么设置?
  • 如何设置 RH8 的环境变量
  • linux在哪里设置jdk的环境变量?
  • JDK环境变量如何设置?
  • 关于环境变量的设置和引用
  • 问个简单问题,怎么样修改PATH环境变量,且电脑启动时,改设置永远有效.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux 如何用SOCKET设置函数设置阻塞和非阻塞?
  • 求助,linux下如何使用函数更改时区,例如设置美国时区 谢谢
  • 怎样在kdev或emacs下设置出象在ms vc上的函数原型提示功能?
  • 在jcreator下打点显示不出函数.大家怎么设置的
  • LINUX C语言中,用什么函数可以设置日期和时间?
  • linux图形环境下有什么api函数可以设置或者取得剪贴板的内容
  • Linux下哪个函数获取和设置ip地址和子网掩码
  • cfmakeraw,设置串口的一个函数,是不是写错了?
  • C语言中什么函数可以设置程序的当前工作路径
  • 如何设置Label和Button里的字体大小和颜色?Button和Label好像没有setFont()这样的函数。
  • recvfrom函数,已经设置好非阻塞模式,是否还存在阻塞的风险?
  • 问一个关于调用setsockopt函数设置tos值的问题
  • linux中一个函数一几个版本,现在我想不用默认的那个版本该如何设置
  • T-SQL实例 函数结果设置为列别名
  • jquery中ajax函数执行顺序问题之如何设置同步
  • sigaction如何设置信号执行函数时屏蔽和屏蔽本身信号.
  • Connect函数在出现错误时返回-1,并且设置errno为相应的错误码
  • 调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
  • 设置定时器,运行一个函数,为什么不能通过编译
  • 用sigaction设置了捕捉函数,为什么进程仍然会被终止
  • C++ Bitsets 成员 count():返回被设置的位的个数
  • 在使用gcc之前,需要先设置环境吗?如何设置?在线等!!!
  • C++ I/O 成员 precision():设置精度
  • 用grub能否设置启动密码?如何设置?
  • C++ Bitsets 成员 any():如果有任何一个位被设置就返回true
  • 在linux服务器上面设置squid后怎么设置可以使客户端能使用QQ?
  • Web服务器/前端 iis7站长之家
  • 请问设置一个和root权限差不多的用户怎么设置?
  • C++ Vectors 成员 reserve():设置Vector最小的元素容纳数量
  • 用JSP。XML开发网站。请问那种环境设置最好。该如何设置环境
  • C++ Bitsets 成员 set():设置位


  • 站内导航:


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

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

    浙ICP备11055608号-3