gpt4 book ai didi

c++ - setuid 创建一个子进程

转载 作者:太空狗 更新时间:2023-10-29 11:35:18 24 4
gpt4 key购买 nike

当我在我的程序中尝试 setuid 时,它创建了 2 个进程。一个是父进程,另一个是子进程。

int isRoot()
{
if (getuid() != 0)
{
return 0;
}
else
{
return 1;
}
}

int main()
{
printf("%s \n \n",getUserName());
printf("%d\n",getuid());

if(!isRoot())
{
printf("This program must be run as root/sudo user!!");
exit(0);
}
seteuid(1000);
while (1) {}
printf("%s \n \n",getUserName());
}

当我使用 ps 命令检查时,它显示了两个不同的进程:

sagar@sagar-desktop:~$ ps -aef | grep a.out
root 20293 18135 0 15:36 pts/7 00:00:00 sudo ./a.out
sagar 20294 20293 99 15:36 pts/7 00:00:17 ./a.out

谁能告诉我为什么要创建两个进程而不是一个进程?

最佳答案

你错了。这就是 sudo x 所做的。它在新进程中以根 身份调用 x 并等待它,因此有两个进程。

关于c++ - setuid 创建一个子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51840557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com