Linux多进程程序设计.docx
- 文档编号:6715820
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:10
- 大小:182.45KB
Linux多进程程序设计.docx
《Linux多进程程序设计.docx》由会员分享,可在线阅读,更多相关《Linux多进程程序设计.docx(10页珍藏版)》请在冰豆网上搜索。
Linux多进程程序设计
实验报告
实验名称:
Linux多进程程序设计
一、
实验目的
熟悉Linux下多进程编程的方法,掌握Linux下fork、exec、wait、waitpid等进程相关的系统调用使用方法。
二、实验内容
在父进程中创建两个子进程,其中一个子进程运行“ls-l”指令,另一个子进程在暂停5s之后退出。
父进程先用阻塞方式等待第一个子进程的结束,然后用非阻塞方式等待第二个子进程的退出,待收集到第二个子进程结束的信息,父进程就返回。
三、实验内容
1、程序说明、流程图等
父进程首先创建一个子进程A,采用组赛模式等待进程A结束,然后创建进程B,采用非阻塞模式等待B进程结束,然后父进程结束
A进程运行ps-ef
B进程等待5S自动结束
父进程会铺货进程A,B的结束,然后给予相应的提示。
2、程序代码
#include
#include
#include
#include
#include
intmain(void)
{
pid_tpa,pb,pr;
pa=fork();
if(pa<0)
{
perror("forkaerror!
");
}
elseif(pa==0)
{
sleep
(1);
printf("processAisrunning.......\n");
if(execlp("ps","ps","-ef",NULL)<0)
{perror("execlpaerror!
");}
exit(0);
}
else
{
printf("thisisparentprocess!
\n");
printf("parentprocessiswatingforchildren!
\n");
printf("wating......wating.......\n");
pr=wait(NULL);
if(pr==pa)
{
printf("parentcatchedthechildA!
\n");
}
printf("creatprocessB!
\n");
pb=fork();
if(pb<0)
{
printf("errorforkB\n");
}
elseif(pb==0)
{
printf("Bprocessisrunning(5S)!
\n");
sleep(5);
printf("Bprocessend!
\n");
exit(0);
}
else
{
do
{
pr=waitpid(pb,NULL,WNOHANG);
if(pr==0)/*Bnotend*/
{
printf("fatheriswatingforchildB!
\n");
sleep
(1);
}
}while(pr==0);/*waitforprocessB*/
if(pr==pb)
printf("childBverywell!
\n");
else
printf("mychildBlost!
");
}
}
}
3、运行测试输出的结果
thisisparentprocess!
parentprocessiswatingforchildren!
wating......wating.......
processAisrunning.......
UIDPIDPPIDCSTIMETTYTIMECMD
root10002:
57?
00:
00:
01/sbin/init
root20002:
57?
00:
00:
00[kthreadd]
root32002:
57?
00:
00:
00[ksoftirqd/0]
root52002:
57?
00:
00:
00[kworker/u:
0]
root62002:
57?
00:
00:
00[migration/0]
root72002:
57?
00:
00:
00[cpuset]
root82002:
57?
00:
00:
00[khelper]
root92002:
57?
00:
00:
00[netns]
root102002:
57?
00:
00:
00[sync_supers]
root112002:
57?
00:
00:
00[bdi-default]
root122002:
57?
00:
00:
00[kintegrityd]
root132002:
57?
00:
00:
00[kblockd]
root142002:
57?
00:
00:
00[kacpid]
root152002:
57?
00:
00:
00[kacpi_notify]
root162002:
57?
00:
00:
00[kacpi_hotplug]
root172002:
57?
00:
00:
00[ata_sff]
root182002:
57?
00:
00:
00[khubd]
root192002:
57?
00:
00:
00[md]
root222002:
57?
00:
00:
00[khungtaskd]
root232002:
57?
00:
00:
00[kswapd0]
root242002:
57?
00:
00:
00[ksmd]
root252002:
57?
00:
00:
00[fsnotify_mark]
root262002:
57?
00:
00:
00[aio]
root272002:
57?
00:
00:
00[ecryptfs-kthrea]
root282002:
57?
00:
00:
00[crypto]
root322002:
57?
00:
00:
00[kthrotld]
root342002:
57?
00:
00:
00[scsi_eh_0]
root352002:
57?
00:
00:
01[scsi_eh_1]
root362002:
57?
00:
00:
00[kworker/u:
3]
root392002:
57?
00:
00:
00[kmpathd]
root402002:
57?
00:
00:
00[kmpath_handlerd]
root412002:
57?
00:
00:
00[kondemand]
root422002:
57?
00:
00:
00[kconservative]
root1602002:
57?
00:
00:
00[scsi_eh_2]
root1762002:
57?
00:
00:
00[jbd2/sda1-8]
root1772002:
57?
00:
00:
00[ext4-dio-unwrit]
root2241002:
57?
00:
00:
00upstart-udev-bridge--daemon
root2351002:
57?
00:
00:
00udevd--daemon
syslog3291002:
57?
00:
00:
00rsyslogd-c4
1023341002:
57?
00:
00:
00dbus-daemon--system--fork--
avahi3611002:
57?
00:
00:
00avahi-daemon:
running[hao-Vir
avahi362361002:
57?
00:
00:
00avahi-daemon:
chroothelper
root3751002:
57?
00:
00:
00NetworkManager
root3831002:
57?
00:
00:
00/usr/sbin/modem-manager
root3921002:
57?
00:
00:
00/usr/lib/policykit-1/polkitd
root4371002:
57?
00:
00:
00/sbin/wpa_supplicant-u-s
root4452002:
57?
00:
00:
00[kpsmoused]
root5062002:
57?
00:
00:
00[iprt]
root5261002:
57?
00:
00:
00upstart-socket-bridge--daemon
root6061002:
57tty400:
00:
00/sbin/getty-838400tty4
root6141002:
57tty500:
00:
00/sbin/getty-838400tty5
root6261002:
57tty200:
00:
00/sbin/getty-838400tty2
root6331002:
57tty300:
00:
00/sbin/getty-838400tty3
root6361002:
57tty600:
00:
00/sbin/getty-838400tty6
daemon6431002:
57?
00:
00:
00atd
root6441002:
57?
00:
00:
00acpid-c/etc/acpi/events-s/
root6451002:
57?
00:
00:
00cron
root6642002:
57?
00:
00:
00[flush-8:
0]
root7461002:
57?
00:
00:
02/usr/sbin/VBoxService
root9051002:
57?
00:
00:
00gdm-binary
root9081002:
57?
00:
00:
00/usr/sbin/cupsd-F
root9101002:
57tty100:
00:
00/sbin/getty-838400tty1
root9141002:
57?
00:
00:
00/usr/sbin/console-kit-daemon-
root980905002:
57?
00:
00:
00/usr/lib/gdm/gdm-simple-slave
root985980202:
57tty700:
01:
28/usr/bin/X:
0-nr-verbose-au
root1000980002:
57?
00:
00:
00/usr/lib/gdm/gdm-session-worke
hao10091000002:
57?
00:
00:
00gnome-session--session=ubuntu
hao10521002:
57?
00:
00:
00/usr/bin/VBoxClient--clipboar
hao10641002:
57?
00:
00:
00/usr/bin/VBoxClient--display
hao10701002:
57?
00:
00:
00/usr/bin/VBoxClient--seamless
hao10761002:
57?
00:
00:
30/usr/bin/VBoxClient--dragandd
hao10791009002:
57?
00:
00:
00/usr/bin/ssh-agent/usr/bin/db
hao10821002:
57?
00:
00:
00/usr/bin/dbus-launch--exit-wi
hao10831002:
57?
00:
00:
01//bin/dbus-daemon--fork--pri
hao10881002:
57?
00:
00:
00/usr/lib/libgconf2-4/gconfd-2
hao11011002:
57?
00:
00:
00/usr/bin/gnome-keyring-daemon
hao11061002:
57?
00:
00:
04/usr/lib/gnome-settings-daemon
hao11091002:
57?
00:
00:
00/usr/lib/gvfs/gvfsd
hao11141009002:
57?
00:
00:
05metacity
hao11161002:
57?
00:
00:
00/usr/lib/gvfs//gvfs-fuse-daemo
hao11201002:
57?
00:
00:
04/usr/bin/pulseaudio--start--
rtkit11221002:
57?
00:
00:
00/usr/lib/rtkit/rtkit-daemon
hao11271009002:
57?
00:
00:
10nautilus
hao11281009002:
57?
00:
00:
00/usr/lib/evolution/2.32/evolut
hao11311009002:
57?
00:
00:
04gnome-panel
hao11351009002:
57?
00:
00:
00zeitgeist-datahub
hao11371120002:
57?
00:
00:
00/usr/lib/pulseaudio/pulse/gcon
hao11381009002:
57?
00:
00:
00nm-applet--sm-disable
hao11401009002:
57?
00:
00:
00gnome-power-manager
hao11421009002:
57?
00:
00:
00/usr/lib/policykit-1-gnome/pol
hao11431009002:
57?
00:
00:
00bluetooth-applet
hao11521002:
57?
00:
00:
00/usr/lib/gvfs/gvfs-gdu-volume-
root11561002:
57?
00:
00:
00/usr/lib/udisks/udisks-daemon
root11581156002:
57?
00:
00:
01udisks-daemon:
polling/dev/sr
hao11601002:
57?
00:
00:
01/usr/bin/python/usr/bin/zeitg
hao11631002:
57?
00:
00:
00/usr/lib/gvfs/gvfs-afc-volume-
hao11671002:
57?
00:
00:
00/usr/lib/gvfs/gvfs-gphoto2-vol
hao11711160002:
57?
00:
00:
00/bin/cat
hao11761160002:
57?
00:
00:
00[zeitgeist-datah]
root11951002:
57?
00:
00:
00/usr/lib/upower/upowerd
hao12631002:
57?
00:
00:
00/usr/lib/gvfs/gvfsd-trash--sp
hao12651002:
57?
00:
00:
00gnome-screensaver
hao12721002:
57?
00:
00:
02/usr/lib/notify-osd/notify-osd
hao12901002:
57?
00:
00:
00/usr/lib/bonobo-activation/bon
hao13031002:
57?
00:
00:
03/usr/lib/gnome-panel/wnck-appl
hao13051002:
57?
00:
00:
00/usr/lib/gnome-applets/trashap
hao13111002:
57?
00:
00:
00/usr/lib/gnome-panel/notificat
hao13121002:
57?
00:
00:
01/usr/lib/indicator-applet/indi
hao13271009002:
57?
00:
00:
00/usr/lib/gnome-disk-utility/gd
hao13301002:
57?
00:
00:
00/usr/lib/gvfs/gvfsd-burn--spa
hao13391002:
57?
00:
00:
00/usr/lib/gvfs/gvfsd-metadata
hao13431002:
57?
00:
00:
00/usr/lib/d-conf/dconf-service
hao13471002:
57?
00:
00:
00/usr/lib/indicator-messages/in
hao13491002:
57?
00:
00:
00/usr/lib/indicator-sound/indic
hao13511002:
57?
00:
00:
00/usr/lib/indicator-application
hao13531002:
57?
00:
00:
00/usr/lib/indicator-session/ind
hao13561002:
57?
00:
00:
00/usr/lib/indicator-datetime/in
hao13571002:
57?
00:
00:
00/usr/lib/indicator-me/indicato
hao13971002:
57?
00:
00:
00/usr/lib/geoclue/geoclue-maste
hao13991009002:
57?
00:
00:
00/usr/bin/python/usr/share/sys
hao14041002:
58?
00:
00:
02/usr/lib/bamf/bamfdaemon
hao14091009002:
58?
00:
00:
00update-notifier
root18642003:
32?
00:
00:
00[kworker/0:
0]
root18712003:
37?
00:
00:
00[kworker/0:
1]
root19182003:
42?
00:
00:
00[kworker/0:
2]
root1954235003:
45?
00:
00:
00udevd--daemon
root1955235003:
45?
00:
00:
00udevd--daemon
root19832003:
45?
00:
00:
00[kworker/0:
3]
hao20101103:
46?
00:
00:
03gedit/home/hao/Desktop/test.c
hao20151103:
47?
00:
00:
01gnome-terminal
hao20192015003:
47?
00:
00:
00gnome-pty-helper
hao20202015003:
47pts/000:
00:
00bash
hao20852020003:
49pts/000:
00:
00./test
hao20862085303:
49pts/000:
00:
00ps-ef
parentcatchedthechildA!
creatprocessB!
fatheriswatingforchildB!
Bprocessisrunning(5S)!
fatheriswatingforchildB!
fatheriswatingforchildB!
fatheriswatingforchildB!
fatheriswatingforchildB!
Bprocessend!
childBverywell!
hao@hao-VirtualBox:
~/Desktop$
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 进程 程序设计