菜鸟的学习之旅-APUE多线程小例子(1)

来源:互联网 发布:淘宝上拍卖的茅台酒 编辑:程序博客网 时间:2024/05/24 01:48

子线程读取文件-父线程进行其它工作

#include <stdio.h>       // printf()#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>       // open()#include <string.h>      // strcpy()#include <unistd.h>      // fork()int main(int ac, char* av[]){        int fd;         // 文件描述符        char fn[1024];  // 文件名称        char buf[1024]; // 文件内容        // 参数个数        if(ac <= 1)        {                printf("please input the file name!\n");                return;        }        // 子线程读取文件        pid_t pid;        if( (pid = fork()) < 0 )        {                printf("create fork failed!\n");                return;        }        else if( pid == 0)        {                while(1)                {                        printf("child!\n");                        strcpy(fn, av[1]);                        printf("file = %s\n", fn);                        fd = open(fn, O_RDONLY);                        printf("fd = %d\n", fd);                        int size = read(fd, buf, sizeof(buf));                        printf("size = %d\n", size);                        printf("%s\n", buf);                        close(fd);                        sleep(3);                }        }        else        {                while(1)                {                        printf("parent!\n");                        sleep(2);                }        }        return 0;}

输出结果:

[root@red2 threads]# ./test a.txt 
child!
file = a.txt
fd = 3
size = 163
1111111111111111111111111111111111111111111
22222222222222222222222222222222222222222222
33333333333333333333
444444444444444444
55555555555
66666666
7777
88
99
0


parent!
parent!
child!
file = a.txt
fd = 3
size = 163
1111111111111111111111111111111111111111111
22222222222222222222222222222222222222222222
33333333333333333333
444444444444444444
55555555555
66666666
7777
88
99
0


parent!

原创粉丝点击