linux 创建两个进程( 参考fork, wait, waitpid, exec 函数集),在子进程中完成如下要求:(1)创建一个用户,赋予相应权限 在主进程完成如下要求: (1)显示“这是主进程! 注:子进程也可以通过shell脚本先完成,然后调用运行该文件。注意子进程先结束,再主进程结束(使用wait or waitpid)。
时间: 2024-03-15 08:47:48 浏览: 61
【Linux】进程二 (PCB & fork/vfork & wait/waitpid & exit/_exit & exec函数族 & 环境变量)
5星 · 资源好评率100%
好的,我来回答你的问题。
首先我们来看子进程要完成的任务:
1. 创建一个用户,赋予相应权限
这个可以通过调用系统命令来实现,具体的操作可以按照以下步骤:
1. 使用 `fork()` 函数创建子进程,然后在子进程中调用 `exec()` 函数来执行 `adduser` 命令,添加一个新用户。在 `exec()` 函数中,我们可以使用 `system()` 函数或者 `execl()` 函数来执行 `adduser` 命令。
2. 在 `adduser` 命令中,我们可以指定要添加的用户的用户名和密码,以及该用户所属的用户组。例如,下面的命令可以创建一个用户名为 `testuser`,密码为 `testpass`,所属用户组为 `testgroup` 的新用户:
```
adduser testuser --ingroup testgroup
```
3. 添加用户后,我们还需要为该用户设置相应的权限。可以使用 `chmod` 命令来设置文件或目录的权限,例如下面的命令可以将 `/home/testuser` 目录的权限设置为 `rwxr-xr-x`:
```
chmod 755 /home/testuser
```
接下来我们来看主进程要完成的任务:
1. 显示“这是主进程!”
这个很简单,我们只需要在主进程中添加一行输出语句即可:
```
printf("这是主进程!\n");
```
最后,我们需要注意的是,子进程需要在主进程之前结束,因此我们需要使用 `wait()` 或者 `waitpid()` 函数来等待子进程结束。具体的操作可以按照以下步骤:
1. 在主进程中调用 `waitpid()` 函数,等待子进程结束。
2. 在子进程中调用 `exit()` 函数,退出子进程。
下面是完整的代码示例:
阅读全文