题目如下:
u创建子进程
u在子进程中打开文件file1,写入自己的“班级_姓名_学号”,
u父进程读取file1中的内容,并且打印显示。
u在父进程中获取已经结束的子进程的状态信息,打印该信息,并且打印结束的子进程的进程号。
代码如下:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<sys/wait.h>
int main()
{
int pid = fork();
int fd = open("1.txt",O_RDWR|O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO);
if(pid == 0)
{
char str1[15] = "CLASS_NAME_ID";
int bits1 = write(fd,str1,15);
if(bits1 == -1)
printf("write error");
}
else if(pid > 0)
{
sleep(1);
char str2[15];
int bits2 = read(fd,str2,15);
if(bits2 == -1)
printf("read error");
else
for(int i=0;i<15;i++)
printf("%c",str2[i]);
printf("\n");
pid_t pid1;
int status,i;
pid1 = wait(&status);
if(WIFEXITED(status))
i = WEXITSTATUS(status);
printf("Child's pid=%d .exit status=%d\n",pid1,i);
printf("pid:%d\n",pid);
}
else
{
printf("fork error\n");
}
return 0;
}
学习目标有以下:
1,利用fork()函数创建子进程;
2,清楚处于子父进程的区别,并处理不同的代码段;
3,wait()函数与其相关宏的操作,得到子进程的相关信息;