LInux C進程控制作業——1

題目如下:

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()函數與其相關宏的操作,得到子進程的相關信息;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章