操作系统上机作业1

Windforce 发表于 2008-10-07 18:22:24



第1题:运行例1

例1运行成功的代码:

 

 #include<stdio.h>
#include<sys/types.h>
#include<unistd.h>

int main(void)
{
 int i;
 int n = 4;
 pid_t childpid;
 for( i = 1 ; i < n ; i ++ )
 {
  if( ( childpid = fork() ) == 0 ) //子进程
   break;
 }
 if( childpid > 0 )
  sleep(1);
 fprintf( stderr , "This is process %ld with parent %ld\n",(long)getpid(),(long)getppid());
 return 0;
}

结果截图:


第2题:只是把第1题改了参数。
运行截图:




第3题:运行例2。

例2运行成功的代码:

#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<errno.h>

int main( int argc , char * argv[] )
{
 pid_t childpid;
 int status;
 if ( (childpid = fork() ) ==-1 ) //fork出错
 {
  perror("This fork failed\n");
  exit(-1);
 }
 else if( childpid == 0 ) //子进程
 {
  if( execvp("threadex1",NULL) < 0 ) //子进程执行另一个程序
  {
   perror("This exec of command failed\n");
   exit(-1);
  }
  
 }
 else if( childpid > 0 ) //父进程
 {
  pid_t apid = wait(&status); //父进程调用wait等待子进程
  printf("Parent process has been waiting the %ld child process exit\n",apid);
  exit(0);
 }
 
}

运行截图:

第4题,只是将第三题改动一下而已,运行截图:



第5题:
运行成功的代码:

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>

int main(void)
{
 int i;
 int n = 4;
 pid_t childpid;
 while( n > 0 )
 {   n--;
  if( ( childpid = fork() ) == 0 ) //子进程
  {
   fprintf( stderr , "Process %ld has been created , with parent %ld\n",(long)getpid(),(long)getppid());
   
  }
  
  else if( childpid > 0 )
  {
   break;
  }
   
 }

// fprintf( stderr , "This is process %ld with parent %ld\n",(long)getpid(),(long)getppid());
 return 0;
}

运行截图:


完毕!
祝大家上机愉快~

P.S.
1.以上代码只能在linux里运行。
未装linux的同学请先去装linux,

ubuntu下载地址:http://cdimage.ubuntu.com/releases/8.04/release/ubuntu-8.04-dvd-i386.iso
fedora下载地址:http://ftp.isu.edu.tw/pub/Linux/Fedora/linux/releases/8/Fedora/i386/iso/Fedora-8-i386-DVD.iso

鉴于linux各版本的实用性,建议大家还是用虚拟机吧。我推荐的虚拟机是Virtual Box,sun公司的,很小(几十M),很好用。

Virtual Box下载地址:http://download.virtualbox.org/virtualbox/2.0.2/VirtualBox-2.0.2-36488-Win_x86.msi


2.老师推荐使用gcc在terminal里编译,我个人喜欢有图形界面的anjuta IDE,有兴趣的话大家可以去新立德软件管理包中下载安装。


曾经的这一天...


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论


  • FnGs
    2008-10-07 19:26:29 匿名 124.114.*.*

    点击率的保证

  • 2008-10-15 19:37:17

    orz
    回想起某人当年VB刚好考了60分

    我思修,近代史,马哲,毛邓三,军事理论都65-,不过C++,数据结构etc.都90+~哈哈~

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定