编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a

ily52033 2010-10-26 08:14:45
编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。。求高手解答
...全文
45203 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

怎么让两个子程序交错输出啊?
[/Quote]

让主进程等待pthread——join(),然后 2个子进程循环输出就行啦,他们之间会抢占资源,谁抢到,谁就输出
shance3c 2012-10-24
  • 打赏
  • 举报
回复 1
楼主这是要交作业?
hqw19881118 2012-10-23
  • 打赏
  • 举报
回复
强烈鄙视楼主这样的伸手党哇!有木有
HuiA_Gao 2012-10-22
  • 打赏
  • 举报
回复
我看看我的新头像
lyyzms 2011-10-17
  • 打赏
  • 举报
回复
怎么让两个子程序交错输出啊?
ily52033 2010-10-27
  • 打赏
  • 举报
回复
编写一段程序,使用系统调用fork()来创建一个子进程,子进程通过系统调用exec()更换自己的执行代码,显示新的代码“new program.”后,调用exit()结束。而父进程则调用waitpid()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。这个也帮我解决下。。谢谢你
ily52033 2010-10-27
  • 打赏
  • 举报
回复
谢谢。。。
justkk 2010-10-27
  • 打赏
  • 举报
回复 6
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

main()
{
if ( fork() == 0 ) // 子进程1
{
printf("b\n");
exit(0);
}
else
{
if ( fork() == 0 ) // 子进程2
{
printf("c\n");
exit(0);
}

printf("a\n"); // 父进程
exit(0);
}
}

多次执行的话,a/b/c的显示顺序不一定,取决于进程的调度时机

另外,你在C/C++专区的帖子我也回复了
那个专区帖子太多,你的帖子被淹没了吧..
ily52033 2010-10-27
  • 打赏
  • 举报
回复
我没有去运行
justkk 2010-10-27
  • 打赏
  • 举报
回复
对lz的回答无语。。。
ily52033 2010-10-27
  • 打赏
  • 举报
回复
第二个错了、好像
DaveLee001 2010-10-27
  • 打赏
  • 举报
回复
fork出来的进程不能确定子进程和父进程谁先执行,是随机的,所以每次执行的结果可能会不一样的!
justkk 2010-10-27
  • 打赏
  • 举报
回复
if( (pid = fork()) == 0 )
{
exec("np", "np", 0);
exit(0);
}
waitpid(pid, &status, 0);

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧