当前位置:首页 > 嵌入式系统基础2013复习题(1)-
#include
intfd[2]; intfdin; charbuf[BUFSZ]; intpid, len; if((pipe(fd)) < 0) err_quit(\if((pid = fork()) < 0) err_quit(\if (pid == 0) { close(fd[1]);
while((len = read(fd[0], buf, BUFSZ)) > 0)
{
write(STDOUT_FILENO,\
write(STDOUT_FILENO, buf, len);
}
close(fd[0]);
exit(0);
} else { close(fd[0]);
if((fdin = open(argv[1], O_RDONLY)) < 0) { perror(\
write(fd[1], \
} else {
while((len = read(fdin, buf, BUFSZ)) > 0) write(fd[1], buf, len); close(fdin); close(fd[1]); }
waitpid(pid, NULL, 0); exit(EXIT_SUCCESS); }
voiderr_quit(char *msg) {
perror(msg); exit(EXIT_FAILURE); }
2、用linux文件操作函数编写程序,显示出文件读5个字节前后文件指针位置。
#include
int handle;
charmsg[] = \charch; /*创建一个文件*/
handle = open(\/*往文件写数据*/
write(handle,msg,strlen(msg)); /*定位文件开头*/
lseek(handle,0L,SEEK_SET); /*逐个读取直到结束*/
do {
read(handle,&ch,1); printf(\
printf(\}
while(!eof(handle)); close(handle); return 0; }
3、利用dup和dup2函数,将普通文件改成标准输出,再将标准输出还原,并通过文件内容和屏幕打印说明。 4、利用fcntl函数,更改已打开的特征属性。(O_RDONLY,O_WRONLY等); #include
main(intargc, char *argv[]) {
int val;
if (argc != 2)
err_quit(\if ((val = fcntl(atoi(argv[1]), F_GETFL, 0)) < 0)
err_sys(\switch (val& O_ACCMODE) {
case O_RDONLY: printf(\break;
case O_WRONLY: printf(\break; case O_RDWR:
printf(\break; default:
err_dump(\}
if (val& O_APPEND)
printf(\if (val& O_NONBLOCK)
printf(\#if defined(O_SYNC)
if (val& O_SYNC)
printf(\
#endif
#if !defined(_POSIX_C_SOURCE) && defined(O_FSYNC) if (val& O_FSYNC)
printf(\#endif
putchar('\\n'); exit(0); }
5、编写程序用共享内存实现进程间通讯。 #include
int main(intargc, char *argv[]) {
intshmid; char *shmbuf; if(argc< 2) {
puts(\exit(EXIT_FAILURE); }
shmid = atoi(argv[1]);
if((shmbuf = shmat(shmid, 0, 0)) < (char *)0) { perror(\exit(EXIT_FAILURE);
}
strcpy(shmbuf,argv[2]); exit(0); } (2)
#include
int main(intargc, char *argv[]) {
intshmid; char *shmbuf; if(argc< 2) {
puts(\exit(EXIT_FAILURE); }
shmid = atoi(argv[1]);
if((shmbuf = shmat(shmid, 0, 0)) < (char *)0) { perror(\exit(EXIT_FAILURE); }
printf(\exit(0); }
共分享92篇相关文档