zoukankan      html  css  js  c++  java
  • sudo启动程序引发的进程个数不对

    这几天把自己负责的服务改成了多进程模型,然后使用sudo来启动进程,示例程序如下:


     
    int main(void)
     
    {
     
    fork();
     
    while(1);
     
    }
     
    编译:
    `gcc test.c
    `
    使用sudo执行a.out sudo ./a.out
    接下来用ps -aux | grep a.out 查找进程得出如下结果:
     
    root    18001  0.3  0.1 179860  3356 pts/23  S+  15:33  0:00 sudo ./a.out
     
    root    18003 93.0  0.0  3920  368 pts/23  R+  15:34  0:11 ./a.out
     
    root    18004 93.0  0.0  3920    92 pts/23  R+  15:34  0:11 ./a.out
     
    很明显,我们的程序应该只fork了一个进程,加上自己本身,共两个进程,本来一直以为是自己那个小伙伴的代码中fork了一个进程。直到今天总觉得不对劲,平白无故多了一个进程,这是哪里来的,当我写了上面这个简单模型后,再使劲想了想,用sudo cat再试验了一下,终于回过味来了。原来上面的sudo ./a.out只是一个shell,这和sudo程序的实现有关。
    当使用sudo ./a.out 执行代码时,会首先启动一个root用户的shell,但是这个shell的名字就叫做"sudo ./a.out",直接引起歧义。
  • 相关阅读:
    高斯模糊原理,算法
    SIFT算法详解
    第五章:状态图
    ANTLR4权威指南
    第八章:包图,组件图,部署图
    棋盘n皇后问题-递归
    普通页面引入React(使用和不使用JSX)
    浏览器环境
    DevTool-Network
    优化浏览器渲染
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/10835170.html
Copyright © 2011-2022 走看看