IOday5

作业一,父进程拷贝图片前半部分,子进程拷贝图片后半部分

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(int argc, const char *argv[])
{
	//已读方式打开原件
	int fd=open("./Piano3_8k.jpg",O_RDONLY);
	if(-1==fd)
	{
		perror("open");
	}
	//获取数据长度
	off_t offset=lseek(fd,0,SEEK_END);
	//已写方式打开复印件
	int fd1=open("./copy.jpg",O_WRONLY|O_CREAT|O_TRUNC,0777);
	if(-1==fd1)
	{
		perror("open");
	}
	//创建子进程
	pid_t cpid=fork();
	//前半部分复制,父进程
	if(cpid>0)
	{
        wait(NULL);
		lseek(fd,0,SEEK_SET);
		lseek(fd1,0,SEEK_SET);
		char c;
		for(int i=0;i

IOday5_第1张图片

2. 验证运行到waitpid非阻塞形式时,若子进程没退出,则子进程会不会变成僵尸进程

#include 
#include 
#include 
#include 
#include 
#include 
 
int main() 
{
    pid_t cpid=fork();
    if (cpid == 0)  
    {   
        printf("子进程pid=%d\n",getpid());
    }   
    else if (cpid > 0)  
    {   
        waitpid(0,NULL,WNOHANG);
        printf("父进程pid=%d\n",getppid());
    }   
    while(1)
    {   
        sleep(1);
    }   
 
    return 0;
}   

不会变成僵尸进程

3.创建孤儿进程

#include 
#include 
#include 
#include 
#include 
#include 
 
int main() 
{
    pid_t cpid=fork();
    if (cpid == 0)  
    {   
        sleep(1);
        printf("子进程pid=%d\n",getpid());
    }   
    else if (cpid > 0)  
    {   
        printf("父进程pid=%d\n",getppid());
        exit(0);
    }   
    while(1)
    {   
        sleep(1);
    }   
 
    return 0;
} 

4.创建僵尸进程

#include 
#include 
#include 
#include 
#include 
#include 
 
int main() 
{
    pid_t cpid=fork();
    if (cpid == 0) 
    {
        printf("子进程pid=%d\n",getpid());
        exit(0);
    } 
    else if (cpid > 0) 
    {
        sleep(1);
        printf("父进程pid=%d\n",getppid()); 
    }   
    while(1) 
    {   
        sleep(1); 
    }   
  
    return 0; 
} 
~ 

你可能感兴趣的:(linux,运维,服务器)