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个字符,并显示在终端屏幕。 展开
 我来答
x901205
2013-10-11 · TA获得超过137个赞
知道答主
回答量:139
采纳率:0%
帮助的人:79.2万
展开全部
居然让我写了半天,受不了
#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式