C语言编程,父进程使用文件系统调用向文本文件data中写入0、2、4、6、8...998偶数,子进程向data中写入1、3、5、7、9...999奇数
时间: 2023-10-20 16:06:17 浏览: 35
以下是使用C语言编写的父子进程并发写入文件的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
#define FILE_NAME "data"
int main() {
pid_t pid;
int fd;
int i, num;
// 打开文件
fd = open(FILE_NAME, O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0) {
perror("open");
exit(EXIT_FAILURE);
}
// 创建子进程
pid = fork();
if (pid < 0) {
perror("fork");
exit(EXIT_FAILURE);
}
// 父进程写偶数
if (pid > 0) {
for (i = 0; i < 500; i++) {
num = i * 2;
write(fd, &num, sizeof(num));
}
}
// 子进程写奇数
else {
for (i = 0; i < 500; i++) {
num = i * 2 + 1;
write(fd, &num, sizeof(num));
}
}
// 关闭文件
close(fd);
// 等待子进程结束
if (pid > 0) {
wait(NULL);
}
return 0;
}
```
在该示例代码中,父进程和子进程分别写入偶数和奇数,每个进程写入500个数字。进程间通过文件描述符fd来访问文件,使用write函数将数字写入文件中。最后,父进程等待子进程结束后退出。
注意:如果在写入文件时使用了多个进程或线程,应该在写入时采用同步机制来避免竞争条件。例如,可以使用互斥锁或信号量来保证同一时间只有一个进程或线程在写入文件。