问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux关于子进程的创建,先让子进程输出当前所在位置,再让父进程在当前...

发布网友 发布时间:2022-04-25 20:24

我来回答

1个回答

热心网友 时间:2023-01-22 12:25

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#include<string.h>

#include<fcntl.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<sys/wait.h>

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

int fd[2];

pid_t pid;

if(pipe(fd) < 0) {

perror("pipe");

exit(1);

}

if((pid = fork()) < 0) {

perror("fork");

exit(2);

}else if(pid == 0) {

close(fd[0]);

char path1[1024] = {0};

getcwd(path1, sizeof(path1));

printf("child path1 ==== %s\n", path1);

write(fd[1], path1, strlen(path1));

printf("child PID = %d, parent PID = %d\n", getpid(), getppid());

sleep(3);

} else {

char path2[1024] = {0};

char buf[1024];

close(fd[1]);

int flg = fcntl(fd[0], F_GETFL);

flg |= O_NONBLOCK;

fcntl(fd[0], F_SETFL);

read(fd[0], buf, sizeof(buf));

printf("parent buf = %s\n", buf);

umask(0000);

if(mkdir("hise", 0755)) {

perror("mkdir");

exit(1);

}

chdir("hise");

int fd_file = open("./01.c",O_RDONLY);

int fd_file2 = open("./cp01.c",O_WRONLY | O_CREAT, 0644);

int buf2[1024];

memset(buf2, 0, 1024);

while(read(fd_file, buf2, sizeof(buf2)-1) > 0 ) {

write(fd_file2, buf2, strlen(buf2));

}

wait(NULL);

sleep(3);

}

return 0;

}

追问哇这么麻烦的吗,,,我们是第三次上这个操作系统课,,老师什么都没讲就要这么长吗,,,而且第二问好像没有写啊

追答第二个问题我也不知道书本啊; 没有办法参考; 不要说教材都差不多, 我只是一个初中生; 压根没有看过国内的教材; 做出来就可能错太多了; 当然如果说全局变量验证用于子进程和父进程一起使用,那么可以告诉你这个是很难控制全局变量的结果的, 包括线程中也一样;当然linux只是用户线程而非内核线程, 但是对于全局变量都一样; 而如果要修改线程和进程间基础通信通常用函数, 而这些函数通常都是传出参数; 如果库中有的基本都是那些get...的和_r结尾的函数; 这些函数基本都有一个指针用于传出函数;
这么点代码也叫麻烦啊! 你要求就4个点了., 而每个点也就平均3行代码, 其他是要使用的库的头文件和标准格式而已;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7窗口淡入淡出慢 iPhone 小技巧:如何将 Safari 浏览器中的网页添加到桌面? 锰粉是什么颜色的金属 铁精粉的常见颜色是什么 烟花爆竹中的金属粉末如何使其呈现绚丽色彩? 金粉有哪些种类 灰土每层回填最大厚度 灰土基础简史 如何让一个喜欢你的女孩讨厌你! 西环里新区基本资料 dog so hot body哪个读音不同? linux 父进程创建子进程的例子 向高手求助:关于linux中父进程创建子进程的问题 网站打不开,域名是在国外madog域名网站注册,点击英文中所说链接不起作用,请高手支招 Linux中为什么要创建子进程? So,dog,hot发音是否相同? dog box so中o发音一样吗 .dog域名在国内什么时候能用? so dog 什么意思? 无视征信的网贷必下款 有没有无视征信的网贷? 哪些网贷不看征信,不上征信 有无视征信的贷款机构或者网贷? “圣人组修其身,而成文于天下矣”翻译 中国古代演算天机的书 谶曰慧星乍见不利东北踽踽何之赡彼乐国颂曰*一点现东方 吴楚依然有帝王 门外客来终不久 乾坤再造在角亢 真有推背书这本书吗?里面讲的如何? 退背图的由来以及50象是什么?拜托各位了 3Q 颂曰 茫茫天数此中求 世道兴衰不自由 万万千千说不尽 不如推背去归休 是什么意思? 推背图中的颂曰时什么意思 so的o和dog的o发音一样吗? 请教linux下fork()创建子进程 thanks for sending me so cute a dog 看!那只小狗真可爱. look! that dog()so() 都来翻译这个句子吧 linux怎么创建子目录 dog和so的发音相同吗? 在linux中创建子进程,在子进程中执行exec函数前通过管道向子进程传递exec函数所执行的新程序 Linux关于创建子进程并用execlp()系统调用执行程序的实验。反复执行该程序,次序好乱啊,没有章理??? 求英语翻译dog eats dog 在Linux系统中编写 C程序,创建一个子进程。父进程和子进程交替运行。父进程先显示一次“Current time: my dog is so quiet so they brought the dog to a doctor for animals b linux 创建父进程和子进程并通信问题 sonotedog linux 创建子目录 Znnsodog什么意思 Linux在子目录下创建子目录的方法 An angel is a dog so…Ibeat the dog when I home at night什么意思_百度问一问 如何在主帐户下创建子帐户 linux