日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux系统进程控制实验报告,Linux进程控制实验报告.doc

發(fā)布時(shí)間:2024/9/27 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux系统进程控制实验报告,Linux进程控制实验报告.doc 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

里奴性進(jìn)程控制實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)名稱(chēng): Linux進(jìn)程控制

實(shí)驗(yàn)要求:一.編寫(xiě)一個(gè)Linux系統(tǒng)C程序,由父親創(chuàng)建2個(gè)子進(jìn)程,再由子進(jìn)程各自從控制臺(tái)接收一串字符串,保存在各自的全局字符串變量中,然后正常結(jié)束。父進(jìn)程調(diào)用waitpid等待子進(jìn)程結(jié)束,并分別顯示每個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)和所接收的字符串。

二. 父進(jìn)程創(chuàng)建一子進(jìn)程,父進(jìn)程向子進(jìn)程發(fā)送數(shù)據(jù),子進(jìn)程接收數(shù)據(jù),并寫(xiě)入文件。

關(guān)鍵問(wèn)題: 一.需要用共享內(nèi)存或使用vfork()函數(shù)創(chuàng)建子進(jìn)程進(jìn)行進(jìn)程之間的數(shù)據(jù)共享及傳遞。父進(jìn)程必須等待子進(jìn)程結(jié)束才能繼續(xù)執(zhí)行。

二.注意信號(hào)的使用。子進(jìn)程需等待父進(jìn)程發(fā)送信號(hào)才執(zhí)行相應(yīng)操作。父,子進(jìn)程之間的通信需要用到共享內(nèi)存或者父進(jìn)程用vfork()創(chuàng)建子進(jìn)程。

設(shè)計(jì)思路: 一.父進(jìn)程使用vfork()創(chuàng)建兩個(gè)子進(jìn)程,以此實(shí)現(xiàn)進(jìn)程之間的通信。子進(jìn)程一用str1保存輸入的字符串,子進(jìn)程二用str2保存字符串。父進(jìn)程用waitpid函數(shù)等待兩個(gè)子進(jìn)程分別輸入完字符串,然后再分別把str1,str2顯示出來(lái)。

二.用共享內(nèi)存的方法來(lái)實(shí)現(xiàn)父子進(jìn)程之間的通信,首先建立共享內(nèi)存區(qū)域,然后建立子進(jìn)程,并讓子進(jìn)程等待父進(jìn)程信號(hào)。在父進(jìn)程中輸入字符串,并把此字符串保存在共享內(nèi)存區(qū)域,然后向子進(jìn)程發(fā)出信號(hào)SIGUSR1,若子進(jìn)程接受到SIGUSR1信號(hào),則把父進(jìn)程保存在共享內(nèi)存區(qū)域的字符串取出,并把它寫(xiě)入文件。

關(guān)鍵代碼:

一.

#include

#include

#include

#include

main()

{

pid_t pid1,pid2;

char str1[20],str2[20];

if((pid1=vfork())<0)

{

perror("創(chuàng)建子進(jìn)程一錯(cuò)誤!\n");

exit(0);

}

else if(pid1==0)

{

printf("輸入字符串一:");

scanf("%s",str1);

exit(0);

}

if((pid2=vfork())<0)

{

perror("創(chuàng)建子進(jìn)程二錯(cuò)誤!\n");

exit(0);

}

else if(pid2==0)

{

printf("輸入字符串二:");

scanf("%s",str2);

exit(0);

}

waitpid(pid1,NULL,0);

waitpid(pid2,NULL,0);

printf("你輸入的字符串一:%s\n",str1);

printf("你輸入的字符串二:%s\n",str2);

}

二.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define key 1024

#define size 160

static void sign(int);

int shmid;

char* shmaddr;

main()

{

pid_t pid;

char str[20];

shmid=shmget(key,size,IPC_CREAT|0600);

if((pid=fork())<0)

{

perror("創(chuàng)建子進(jìn)程錯(cuò)誤!\n");

exit(0);

}

else if(pid==0)

{

if(signal(SIGUSR1,sign)==SIG_ERR)

{

printf("SIGUSR1錯(cuò)誤!\n");

exit(0);

}

pause();

printf("子進(jìn)程結(jié)束!\n");

exit(0);

}

sleep(1);

shmaddr=(char*)shmat(shmid,NULL,0);

printf("請(qǐng)輸入字符串:");

scanf("%s",str);

strcpy(shmaddr,str);

shmdt(shmaddr);

kill(pid,SIGUSR1);

wait();

shmctl(shmid,IPC_RMID,NULL);

}

static void sign(int signnum)

{

int fd;

char* shmaddr;

if(signnum==SIGUSR1)

{

printf("子進(jìn)程接收到SIGUSR1.\n");

shmaddr=(char*)shmat(shmid,NULL,0);

if((fd=open("testfile.txt",O_RDWR|O_CREAT|O_

總結(jié)

以上是生活随笔為你收集整理的linux系统进程控制实验报告,Linux进程控制实验报告.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。