Linux进程控制
来源:互联网 发布:淘宝的衣服在哪里批发 编辑:程序博客网 时间:2024/04/29 20:51
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
/********************************************************************************
*
* MAIN
*
* getpid(),getppid(),fork(),vfork(),execl(),execlp(),execv(),system(),wait()
*
*
********************************************************************************/
int main()
{
pid_t a;
int count=0;
a=vfork(); //code and data is shared,and the child process run first
// a=fork(); //noly code is shared,the data is copied for child process
count++;
/* creating failed */
if(a<0)
{
printf("Creating a child process is failure!\n");
exit(EXIT_FAILURE);
}
/* father process */
if(a>0)
{
wait(NULL); //wait for the child to finish processing
printf("I'm the FATHER process and my ID is %d\n",getpid());
printf("my child's ID is %d\n",a);
/*if child has been created by vfork(),the count will's be 2,
because of the shared data(count included).obviously,it will
be 1 when child have been created by fork().*/
printf("count=%d\n",count);
}
/* child process */
else if(a==0)
{
char *argv[]={"ls","-l",".",NULL};
printf("I'm the CHILD process and my ID is %d\n",getpid());
printf("my father's ID is %d\n",getppid());
printf("count=%d\n",count);
/* test for exec*(...),to achieve the job of ls -l . */
// execl("/bin/ls","ls","-l",".",NULL); //the program ls will be found according to the directory and the parament will be transmited to ls.
// execlp("ls","ls","-l",".",NULL); //the program ls will be found according to the PATH and the parament will be transmited to ls.
// execv("/bin/ls",argv); //the program ls will be found according to the directory and the parament will be transmited to ls.
/* the most differece between excec*() and system() : the excec*() will replace the proccess who
called them and no return,while the system() will return to the proccess who called them when finished*/
system("ls -l ."); //system() will call for fork() to create a child process to do the job of "ls -l"
printf("I'm sleeping\n");
sleep(5);
}
exit(EXIT_SUCCESS);
}
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
/********************************************************************************
*
* MAIN
*
* getpid(),getppid(),fork(),vfork(),execl(),execlp(),execv(),system(),wait()
*
*
********************************************************************************/
int main()
{
pid_t a;
int count=0;
a=vfork(); //code and data is shared,and the child process run first
// a=fork(); //noly code is shared,the data is copied for child process
count++;
/* creating failed */
if(a<0)
{
printf("Creating a child process is failure!\n");
exit(EXIT_FAILURE);
}
/* father process */
if(a>0)
{
wait(NULL); //wait for the child to finish processing
printf("I'm the FATHER process and my ID is %d\n",getpid());
printf("my child's ID is %d\n",a);
/*if child has been created by vfork(),the count will's be 2,
because of the shared data(count included).obviously,it will
be 1 when child have been created by fork().*/
printf("count=%d\n",count);
}
/* child process */
else if(a==0)
{
char *argv[]={"ls","-l",".",NULL};
printf("I'm the CHILD process and my ID is %d\n",getpid());
printf("my father's ID is %d\n",getppid());
printf("count=%d\n",count);
/* test for exec*(...),to achieve the job of ls -l . */
// execl("/bin/ls","ls","-l",".",NULL); //the program ls will be found according to the directory and the parament will be transmited to ls.
// execlp("ls","ls","-l",".",NULL); //the program ls will be found according to the PATH and the parament will be transmited to ls.
// execv("/bin/ls",argv); //the program ls will be found according to the directory and the parament will be transmited to ls.
/* the most differece between excec*() and system() : the excec*() will replace the proccess who
called them and no return,while the system() will return to the proccess who called them when finished*/
system("ls -l ."); //system() will call for fork() to create a child process to do the job of "ls -l"
printf("I'm sleeping\n");
sleep(5);
}
exit(EXIT_SUCCESS);
}
0 0
- linux进程及进程控制
- linux进程及进程控制
- linux进程及进程控制
- linux进程及进程控制
- LINUX进程控制
- Linux 进程控制
- linux进程控制
- linux进程控制
- Linux的进程控制
- linux进程控制
- LINUX进程控制 笔记
- linux进程控制
- linux 进程控制说明
- linux 进程控制入门
- Linux进程控制
- Linux进程控制
- LInux进程控制
- Linux进程控制
- IO流-2.【字符流缓冲区BufferedWriter/BufferedReader】【readLine()方法】【装饰设计模式】【LineNumberReader】
- Java内存泄露的理解与解决
- 成绩排序
- html隐藏标签
- C语言 数据类型
- Linux进程控制
- JSONObject简介
- 20140904,微软九月安全补丁提前通知
- maven profiles
- android ListView详解
- 富文本编辑器开发
- 如果中秋这样醉人,就送个手机吧
- 用模板写快速排序-数组
- 迭代算法与递归算法概述