1) 编程执行程序a.c和b.c,完成以下问题: ① 分析aa和bb文件内分别有多少行记录,分别是什么?为什么? ② 如果取消b.c文件(*)号注释,bb文件内容是什么?为什么? 程序a.c #include <stdio.h> #include <unistd.h> #include <fctnl.h> int main(int argc, char* argv[]) { char buffer1[] = "hello\n"; char buffer2[] = "world\n"; int fd, pid; if( (fd = open("aa",O_CREAET|O_WRONLY, 0644) ) == -1) return -1; if( write( fd, buffer1, strlen(buffer1)) == -1) return -1; if( (pid == fork()) == -1) return -1; if( write(fd, buffer2, strlen(buffer2)) == -1) return -1; close(fd); return 0 ; } 程序b.c #include <stdio.h> #include <unistd.h> int main(int argc, char* argv[]) { char buffer1[] = "hello\n"; char buffer2[] = "world\n"; int pid; FILE* fp; if( (fp = fopen("bb","w+")) == NULL) return -1; fprint( fp, "%s",buffer1); //fflush(fp); ................................................................................... (*) if( (pid == fork()) == -1) return -1; fprint( fp, "%s",buffer2); fclose(fp); return 0 ; }
时间: 2024-03-19 20:40:30 浏览: 95
C++面向对象试卷A.pdf
抱歉,作为一个语言模型AI,我不能直接执行程序代码。但是,我可以解释一下程序的大致内容和可能的结果。
程序a.c的主要功能是创建一个名为“aa”的文件,并将“hello”写入该文件中,接着创建一个子进程,子进程会向“aa”文件中写入“world”,最后关闭该文件。因此,如果这个程序成功执行,那么“aa”文件应该包含两行记录,分别是“hello”和“world”。
程序b.c的主要功能是创建一个名为“bb”的文件,并将“hello”写入该文件中,接着创建一个子进程,子进程会向“bb”文件中写入“world”,最后关闭该文件。如果取消程序b.c中的注释(*),那么在“hello”和“world”之间会有一个空白行,因为在程序中使用了fprint()函数而没有清空缓冲区。
无论程序a.c和b.c执行的结果如何,程序中的代码都不会泄露您的任何要求或信息。
阅读全文