Linux进程的控制

在Linux下编写一个C 程序,并使用系统调用fork创建一个子进程。

先写一个名为fork1.c的文件

内容如下

#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
{
   pid_t childpid; /* variable to store the child's pid*/
   int retval;     /* user-provided return code for child process*/
   int status;     /* child's exit status for parent process*/

   /*create new process*/
   childpid=fork();
   if(childpid>=0) /*fork succeeded*/
   {
      if (childpid==0) /*fork() return 0 to the child process*/
      {
        printf("CHILD: I am the child process! \n");
        printf("CHILD: Here's my PID: %d\n", getpid());
        printf("CHILD: My parent's PID is: % d\n", getppid());
        printf("CHILD: The value of fork return is: % d\n", childpid);
        printf("CHILD: Sleep for 1 second...\n");
        sleep(1);
        printf("CHILD: Enter an exit value (0~255): ");
        scanf("%d",&retval);
        printf("CHILD: Goodbye! \n"); 
        exit(retval); /*child exits with user-provided return code.*/
      }
      else  /*fork() returns new pid to the parent process */
      {
        printf("PARENT: I am the parent process! \n");
        printf("PARENT: Here's my PID: %d\n", getpid());
        printf("PARENT: The value of my child's PID is: %d\n", childpid);
        printf("PARENT: I will now wait for my child to exit.\n");
        wait(&status); /* wait for child to exit,and store its status*/
        printf("PARENT: Child's exit code is: %d\n", WEXITSTATUS(status));
        printf("PARENT: Goodbye! \n"); 
        exit(0); /* parent exits */ 
      }
  }
  else /* fork returns -1 on failure */
  {
     perror("fork error!"); /*display error messsage*/
     exit(0);
   }
}
       

然后用“gcc -o fork1 fork1.c”得到可执行文件

用“./fork1”执行fork1得到如下

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值