Linux多进程程序设计.docx

上传人:b****7 文档编号:15824259 上传时间:2023-07-08 格式:DOCX 页数:11 大小:182.40KB
下载 相关 举报
Linux多进程程序设计.docx_第1页
第1页 / 共11页
Linux多进程程序设计.docx_第2页
第2页 / 共11页
Linux多进程程序设计.docx_第3页
第3页 / 共11页
Linux多进程程序设计.docx_第4页
第4页 / 共11页
Linux多进程程序设计.docx_第5页
第5页 / 共11页
Linux多进程程序设计.docx_第6页
第6页 / 共11页
Linux多进程程序设计.docx_第7页
第7页 / 共11页
Linux多进程程序设计.docx_第8页
第8页 / 共11页
Linux多进程程序设计.docx_第9页
第9页 / 共11页
Linux多进程程序设计.docx_第10页
第10页 / 共11页
Linux多进程程序设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Linux多进程程序设计.docx

《Linux多进程程序设计.docx》由会员分享,可在线阅读,更多相关《Linux多进程程序设计.docx(11页珍藏版)》请在冰点文库上搜索。

Linux多进程程序设计.docx

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$

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2