我是 C 语言和 Linux 的新手。我有一个与 fork()、getpid() 和 exec() 函数相关的问题。我使用 fork() 编写了 ac 程序,调用我的程序的代码如下“代码:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void fun()
{
printf("\n this is trial for child process");
}
int main (int argc, char const *argv[])
{
int i,status,pid,t;
if(pid=fork()<0)
{
printf("\nfailed to create the process\n");
}
if(pid=fork()==0)
{
printf("\n the child process is created");
fun();
exit(1);
}
while(wait(&status)!=pid);
return 0;
}
该程序的输出如下:
子进程被创建
这是子进程的试验
子进程被创建
这是子进程的试验
现在我的问题如下:
- 为什么程序的输出显示相同的东西两次?输出应该是“创建子进程,这是子进程的试验”
- 为什么输出不符合代码?
- 我们可以有一个程序,它有 4 个进程并且所有进程执行不同的任务,例如一个进程打印“我的名字”。一个进程打印“我的年龄”,另一个进程打印“我的地址?
- 如何在主函数中创建多个进程?
- 如何控制多个进程的执行?
- 该
exec()
功能有什么作用?任何人都可以用源代码解释我的工作exec()
原理吗?fork()
getpid()
请帮助这个新手。