【发布时间】:2011-06-01 09:50:42
【问题描述】:
我是 c 语言和 Linux 的新手。我有一个与 fork()、getpid() 和 exec() 函数有关的问题。 我使用 fork() 编写了一个 c 程序调用我的程序代码如下“ 代码:
#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 个进程并且所有进程执行不同的任务,例如一个进程打印“我的名字”。一个进程打印“我的年龄”,另一个进程打印“我的地址?
- 如何在main函数中创建多个进程?
- 如何控制多个进程的执行?
-
exec()函数有什么作用?谁能用源代码解释一下exec()、fork()、getpid()的工作原理?
请帮助这个新手。
【问题讨论】:
标签: c fork systems-programming fork-join