免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3903 | 回复: 14
打印 上一主题 下一主题

[C] 子进程往文件里写东西写不进去? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-17 19:38 |只看该作者 |倒序浏览
学到fork这段了,想用父进程写东西,子进程打开文件,写不进去了,还是就没有我这么干的:wink: :wink:
帮忙看下,谢谢
#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define size 51
int
main()
{
        char buf[size]={"sfsdfsdf"};
        int fp;
        pid_t pid;
        if((pid = fork())<0)
        {
                perror("fork()\n";
                exit(1);
}
        else if(pid == 0)
                {
                        fp = open("/tmp/waitem",O_RDWR|O_CREAT,0700);
                        if(fp<0)
                                {
                                perror("open()\n";
                               exit(1);
                                }
                      exit(0);

                }
        else
                {
                        wait(NULL);
                        write(fp,buf,size);
                        printf("OK";
                        close(fp);
                }
        exit(0);

}

论坛徽章:
0
2 [报告]
发表于 2008-07-17 19:40 |只看该作者
那个笑脸的图标怎么也弄上去了...不要看那个,谢谢,帮忙指点下

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2008-07-17 19:40 |只看该作者
帖子编辑一下:禁用Smiles 复选框选上。

这里父子进程之间是不是存在竞争,需要用锁呢。

论坛徽章:
0
4 [报告]
发表于 2008-07-17 19:44 |只看该作者
子进程,打开文件后,exit // 此函数释放资源,关掉文件描述符

论坛徽章:
0
5 [报告]
发表于 2008-07-17 19:47 |只看该作者
可是不调用exit也写不进去

论坛徽章:
0
6 [报告]
发表于 2008-07-17 19:49 |只看该作者
而且我看wait是一直等着子进程终止,不会有竞争了把...

论坛徽章:
0
7 [报告]
发表于 2008-07-17 19:55 |只看该作者
哦,上面说错了。
这个不是子进程退出的问题,是你用的方式就不对。进程间通信不是这样的

论坛徽章:
0
8 [报告]
发表于 2008-07-17 20:14 |只看该作者
这个是进程间通信阿,我还没看到那里,就是想起来想写个试试, 一会看看去,谢谢拉

论坛徽章:
0
9 [报告]
发表于 2008-07-17 20:51 |只看该作者
你的这个例子:父子进程的fp的值是不一样的。子进程的fp用的是父进程的副本,子进程的fp改了,父进程的fp并不变。
多进程一般采用写时复制(copy_on_write)技术

论坛徽章:
0
10 [报告]
发表于 2008-07-17 21:18 |只看该作者
我去网上搜搜这个技术怎么用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP