openlinux
❶ linux下open返回的文件描述符的类型为file*
形式如下:
if(fd1 = open("/home/yui/Program/bkd1",O_RDWR) < 0) /*注意行少了一对括号 */
{
perror("open");
exit(-1);
}
else{
printf("open fd1:%d succcess.\n",fd1);
}
正确的形式:
if((fd1 = open("/home/yui/Program/bkd1",O_RDWR)) < 0)
{
perror("open");
exit(-1);
}
else{
printf("open fd1:%d succcess.\n",fd1);
}
❷ linux 中 open和fopen的区别
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。
fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数
open和fopen的区别:
1、open属于低级IO,fopen是高级IO。
2、open返回一个文件描述符,fopen返回一个文件指针。
3、open无缓冲,fopen有缓冲。
4、open与 read, write 等配合使用, fopen与 fread, fwrite等配合使用。
5、fopen是在open的基础上扩充而来的,在大多数情况下,用fopen。
❸ linux中open函数的问题
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
intmain(void)
{
intfd=-1;
if(-1==(fd=open("/tmp/new",O_CREAT|S_IRWXU))){
/*是O_CREAT|S_IRWXU*/perror("openfileerror");
exit(1);
}
close(fd);
return0;
}
你看看,在tmp目录下有没有new文件。
❹ openwrt 和 Linux,那个难度大些
openwrt最早就是基于linksys wrt54G的固件开发而来。linksys wrt54G就是一个嵌入式linux。openwrt在基于wrt54G的内核时,使用了buildroot框架,后来重构时,使用了buildroot2框架。buildroot框架使得添加一个app变的非常方便,所以你用openwrt做开发,无论是添加内核模块还是上层应用,都很简单方便。而linux嵌入式的原生sdk,要加一个上层应用的话,需要你自己去添加不少的Makefile内容,才能编译进去。
openwrt社区强大,提供的app特别多,功能强大,勾选某个app即可。原生linux就需要你再手动移植了。
openwrt提供了jffs文件系统,配置参数使用uci,这也是得上层应用的开发变的更便捷。原生嵌入式linux的话,一般不提供可写文件系统,配置参数是直接用二进制的方式操作flash,比如mtk linux sdk提供的nvram之类的。这种方式灵活性就不如文件系统。但是没有文件系统的优势也很明显,占用空间少。
以上都是从开发便利程度讲的。至于说openwrt和原生嵌入linux本质的区别,openwrt自己做了不少修改,比如使用procd替代init,添加preinit阶段。openwrt实现的ubus通信机制,可以在上层应该开发进程间通信时,更方便使用。netifd进程管理网络等。
❺ openthos和linux有什么区别
openthos是基于Android x86开发的桌面操作系统,类似于remix OS 和凤凰OS,属于Android 系统的衍生。但是他又集成了Linux 子系统,可以使用Linux 软件。
Linux 就不用解释了。
❻ Caldera OpenLinux哪里有下载
这个系统十几年前就没了吧?后续有几版 SCO Linux ,去 SCO 的网站上看看。
❼ openwrt算是linux发行版吗和普通linux的区别在哪
linux是一个开源项目,openwrt是一个基于linux内核做出的产品,
就像安卓4.0以前其实是运行在linux上的java虚拟出来的,
4.0之后是直接运行在linux内核上,速度和响应提高不少。
❽ linux open和read问题
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#define BUFFER_SIZE 1024
int main(int argc,char *argv[])
{
int from_fd,to_fd;
int bytes_read,bytes_write;
char buffer[BUFFER_SIZE];
char *ptr;
if(argc!=3)
{
fprintf(stderr,"usage:%s fromfile tofile\n",argv[0]);
exit(1);
}
if(from_fd=open(argv[1],O_RDONLY|O_NONBLOCK)==-1)
{
fprintf(stderr,"open %s error!\n",argv[1]);
exit(1);
}
memset(buffer, 0x00,sizeof(buffer));
printf("read_start....\n");
bytes_read=read(from_fd,buffer,BUFFER_SIZE);
printf("bytes_read=[%d],buffer=[%s]\n", bytes_read,buffer);
}
这个是3.c文件,编译 gcc -o 33 3.c;
执行 ./33 a.c(其中a.c中的内容是'hello world');
但是程序执行到最后的时候就阻塞掉了,不知道为啥? 各位大虾帮帮忙if(argc!=3)
{
fprintf(stderr,"usage:%s fromfile tofile\n",argv[0]);
exit(1);
}
❾ linux 用open打不开串口
操作硬件之前都是要先open设备,先来分析下这里的open函数具体做了那些工作(做了大量工作 ,真的!)。
应用层通过open系统调用open(“/dev/s3c2410_serial0”,)一层一层调用到会调用到tty_open。
因为串口在linux下是作为tty设备的,结合前面的注册过程可以分析这里首先调用的就是tty_open这个函数。
cdev_init(&driver->cdev, &tty_fops);cdev_init(&driver->cdev, &tty_fops);因为根据注册的时候将s3c2410_serial0注册为一个字符设备,字符设备对应的驱动为tty_fops 详细介绍查看下《linux就该这么学》
❿ linux 系统中open 方法是什么意思
大概是
现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。
Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换