fork函数
pid_t fork();
头文件:
#include <sys/types.h>
#include <unistd.h>
功能:创建进程
参数:无
返回值:如果成功,子进程的PID会返回给父进程,子进程收到0。
失败时,父进程中返回-1,不创建子进程,并置为错误码。
#include <head.h>
int main(int argc, const char* argv[])
{
int fd;
char buf[128] = { 0 };
pid_t pid;
pid = fork();
if (argc != 2) {
fprintf(stderr, "input error,try again\n");
fprintf(stderr, "usage:./a.out filename\n");
return -1;
}
if ((fd = open(argv[1], O_RDONLY)) == -1)
PRINT_ERR("open error");
if (pid == -1) {
PRINT_ERR("fork error");
} else if (pid == 0) {
printf("这是子进程:");
lseek(fd, 0, SEEK_SET);
read(fd, buf, index / 2);
printf("%s", buf);
} else {
printf("这是父进程:");
off_t index = lseek(fd, 0, SEEK_END);
lseek(fd, index / 2, SEEK_SET);
while (read(fd, buf, sizeof(buf) - 1) != 0) {
printf("%s", buf);
memset(buf, 0, sizeof(buf));
}
}
close(fd);
puts("");
return 0;
}