南邮 | 操作系统实验二:进程控制

  1. 学习和了解进程控制的基本和常用的系统调用 fork wait sleep exit exec 等等。

  2. 查看 /usr/src/include/sched.h中的task_struct 数据结构,并分析Linux 操作系统进程状态。

  3. 通过进程创建的应用实例,深刻理解进程创建的过程。

程序例题1

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <stdlib.h> //实验指导上少了这一个头文件
int main(void) 
{ 
pid_t pid; 
int data=5; 
if((pid=fork())<0) 
{ 
printf("fork error\n"); 
exit(0); 
} 
else if(pid==0) 
{ 
data--; 
printf("child\'s data is:%d\n",data); 
exit(0); 
} 
else 
{ 
printf("parent\'s data is:%d\n",data); 
} 
exit(0); 
} 

程序例题2

用fork创建一个子进程,由其调用execve启动shell命令ps查看系统当前的进程信息。

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h>
#include <stdlib.h> //实验指导上少了这一个头文件
#include <sys/wait.h> //实验指导上少了这一个头文件
main( ) 
{ 
  pid_t pid; 
  char *path="/bin/ps"; 
  char *argv[5]={ "ps","-a","-x",NULL}; 
printf(“Run ps with execve by child process:\n”); 
  if((pid=fork( ))<0) 
{ 
printf(“fork error!); 
  exit(0); 
} 
else if (pid==0) 
{ 
  if(execve(path,argv,0)<0) 
   { 
     printf(“fork error!); 
     exit(0); 
   } 
printf(“child is ok!\n”); 
exit(0); 
} 
//wait( ); 
pid = wait(NULL);  //实验指导上 wait 用错了
printf(“it is ok!\n”); 
exit(0); 
} 
全部评论

相关推荐

迷茫的大四🐶:这才是秋招啊,我那除了广告还是广告的邮件通知,空白一片面试日程安排还配叫秋招吗
秋招白月光
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务