1.请在Linux系统下新建文件“input.txt”,输入字符“a b c d e”;
2.l编写一个C语言程序:l主进程创建两个子进程l一个子进程向上述“input.txt”追加写入10个字符;l另外一个子进程从上述“input.txt”读出前10个字符,...
2. l 编写一个C语言程序: l 主进程创建两个子进程 l 一个子进程向上述“input.txt”追加写入10个字符; l 另外一个子进程从上述“input.txt”读出前10个字符,并显示在终端屏幕。
展开
1个回答
展开全部
居然让我写了半天,受不了
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
pid_t pid1, pid2;
int fd;
char str[10];
system("echo a b c d e > input.txt");
if((pid1 = fork()) == -1)
{
perror("can not create process1\n");
exit(-1);
}
if(pid1 == 0)//process1
{
if((fd = open("input.txt", O_WRONLY)) == -1)
{
perror("open input.txt failed\n");
exit(-1);
}
lseek(fd, -1, SEEK_END);
if(write(fd, "012345679", 11) == -1)
{
printf("write the message to the file failed\n");
exit(-1);
}
close(fd);
}
else
{
sleep(3);//let the process1 write the file
if((pid2 = fork()) == -1)
{
perror("can not create process2\n");
exit(-1);
}
if(pid2 == 0)//process2
{
if((fd = open("input.txt", O_RDONLY)) == -1)
{
perror("open input.txt failed\n");
exit(-1);
}
if(read(fd, str, 10) == -1)
{
printf("get the message failed\n");
exit(-1);
}
printf("%s\n", str);
close(fd);
}
else//parent
{
waitpid(pid1, NULL, 0);
waitpid(pid2, NULL, 0);
}
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询