编写两个不同的可执行程序,一个打开文件,一个读文件
2016-07-09 12:54
597 查看
2、编写两个不同的可执行程序,名称分别为a和b,b为a的子进程。在a程序中调用open函数打开a.txt文件。在b程序不可以调用open或者fopen,只允许调用read函数来实现读取a.txt文件。(a程序中可以使用 fork与execve函数创建子进程)。
makefile 文件
.SUFFIXES:.c .o
CC=gcc
SRCS1=homework.c
SRCS2=homework1.c
OBJS1=$(SRCS1:.c=.o)
OBJS2=$(SRCS2:.c=.o)
EXE1=homework
EXE2=homework1
all: $(OBJS1) $(OBJS2)
$(CC) -o $(EXE1) $(OBJS1)
$(CC) -o $(EXE2) $(OBJS2)
@echo '----------------ok------------'
.c.o:
$(CC) -Wall -g -o $@ -c $<
clean:
-rm -f $(OBJS)
-rm -f core*
打开文件的进程
读文件的进程
makefile 文件
.SUFFIXES:.c .o
CC=gcc
SRCS1=homework.c
SRCS2=homework1.c
OBJS1=$(SRCS1:.c=.o)
OBJS2=$(SRCS2:.c=.o)
EXE1=homework
EXE2=homework1
all: $(OBJS1) $(OBJS2)
$(CC) -o $(EXE1) $(OBJS1)
$(CC) -o $(EXE2) $(OBJS2)
@echo '----------------ok------------'
.c.o:
$(CC) -Wall -g -o $@ -c $<
clean:
-rm -f $(OBJS)
-rm -f core*
打开文件的进程
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/stat.h> int main(int arg, char *args[]) { int fd = open("a.txt", O_RDONLY); pid_t id = fork(); if (id < 0) { return 0; } if (id > 0) { exit(0); } if (id == 0) { char s[10] = {0}; sprintf(s, "%d", fd); char *argv[] = { "xsadsad", s, NULL }; //char *envp[] = { "PATH=/bin", NULL }; execve("homework1", argv, NULL); } return EXIT_SUCCESS; }
读文件的进程
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/stat.h> int main(int arg, char *args[]) { if (arg < 2) { return 1; } printf("%s\n", args[0]); printf("%s\n", args[1]); int fd = atoi(args[1]); char buf[100] = {0}; read(fd, buf, 100); close(fd); printf("%s\n", buf); return 1; }
相关文章推荐
- VS2015下Log4Cplus编译及其使用
- 对于javascript四舍五入保留多少位小数的问题
- Alamofire请求网络
- iOS-最全的App上架教程
- Subtree
- SVN服务器搭建和使用
- Linux编写一个孤儿进程,这个孤儿进程可以同时创建100个僵死进程。
- Python cx_Oracle & Oracle Client for Mac OS
- bzoj1821(克鲁斯卡尔)
- Rich feature hierarchies for accurate object detection and semantic segmentation 笔记
- 安卓手册 第三章(开发常识)
- 初学者对于I/O流的小节-下
- CMake 运行错误 could not find CMAKE_ROOT
- Cocoa框架
- 四种方案解决ScrollView嵌套ListView问题
- 十年微软(Microsoft)MVP
- .net 微信开发 从基本配置到完整demo ( 一 )
- hello world
- 拍照界面和照片编辑,复制、剪切、粘贴等菜单的显示语言设置
- [2016/7/9]素数筛