进程练习题

#include <mystdio.h>

int main(int argc, const char *argv[])

{

int fd_r =open("./2024.png",O_RDONLY);

if( fd_r <0)

{

printf("%d",LINE);

perror("open");

return -1;

}

int fd_w =open("./2024_fuben.png",O_WRONLY|O_CREAT|O_TRUNC,0777);

if(fd_w <0)

{

printf("%d",LINE);

perror("open");

return -1;

}

off_t size = lseek(fd_r,0,SEEK_END);

pid_t pid = fork();

if(pid>0)

{

sleep(4);

lseek(fd_r,0,SEEK_SET);

lseek(fd_w,0,SEEK_SET);

char c;

for(int i=0;i<size/2;i++)

{

read(fd_r,&c,1);

write(fd_w,&c,1);

}

printf("前半部分拷贝完毕\n");

}

else if(0 == pid)

{

char arr1[10],arr2[10],arr3[10];

sprintf(arr1,"%d",fd_r);

sprintf(arr2,"%d",fd_w);

sprintf(arr3,"%ld",size);

execl("b.out",arr1,arr2,arr3,NULL);

}

else{

perror("fork");

return -1;

}

close(fd_r);

close(fd_w);

return 0;

}

#include <mystdio.h>

int main(int argc, const char *argv[])

{

int fd_r = atoi(argv[0]);

int fd_w = atoi(argv[1]);

off_t size = atoi(argv[2]);

lseek(fd_r,size/2,SEEK_SET);

lseek(fd_w,size/2,SEEK_SET);

char c;

for(int i=0;i<size/2;i++)

{

read(fd_r,&c,1);

write(fd_w,&c,1);

}

printf("后半部分拷贝完毕\n");

return 0;

}

孤儿进程

#include <mystdio.h>

int main(int argc, const char *argv[])

{

pid_t pid = fork();

if(0 == pid)

{

while(1)

{

printf("%d %d\n",getppid(),getpid());

sleep(1);

}

}

return 0;

}

僵尸进程

#include <mystdio.h>

int main(int argc, const char *argv[])

{

pid_t pid=fork();

if(pid>0)

{

while(1)

{

printf("%d %d %d\n",getpid(),pid,LINE);

sleep(1);

}

}

else if(0 == pid)

{

for(int i=0;i<3;i++)

{

printf("%d %d %d\n",getppid(),getpid(),LINE);

sleep(1);

}

exit(0);

}

else{

perror("fork");

return -1;

}

return 0;

}

守护进程

#include <mystdio.h>

int main(int argc, const char *argv[])

{

pid_t pid=fork();

if(0 == pid)

{

//创建会话组

setsid();

//修改当前孤儿进程的运行目录

chdir("/usr");

//重设文件权限掩码

//关闭所有文件描述符

for(int i=0;i<getdtablesize();i++)

{

close(i);

}

while(1)

{

sleep(1);

}

}

return 0;

}

相关推荐
IT成长日记1 小时前
【Nginx开荒攻略】Nginx虚拟主机配置:从域名、端口到IP的完整指南
linux·运维·服务器·nginx·虚拟主机
迎風吹頭髮2 小时前
Linux内核架构浅谈8-Linux内核与UNIX的传承:设计思想与特性差异
linux·运维·架构
黑马金牌编程3 小时前
Linux 服务器常见的性能调优
linux·运维·服务器·性能优化
jieyu11193 小时前
网络、主机安全扫描工具
linux·安全·系统安全
tianyuanwo3 小时前
Linux进程管理中的T状态问题分析与解决体系
linux·运维·进程管理·t状态
liuyao_xianhui4 小时前
Linux_基本指令1
linux·运维·服务器
守望时空334 小时前
Linux挂载NTFS分区指南
linux
shan~~5 小时前
linux达梦数据库操作
linux·数据库·chrome
liliangcsdn5 小时前
LLM时代基于unstructured解析非结构化pdf
linux·服务器·数据分析
Codigger官方6 小时前
Linux 基金会牵头成立 React 基金会:前端开源生态迎来里程碑式变革
linux·前端·react.js