当前位置: 技术问答>linux和unix
请教系统调用的问题,附带一个相关程序的问题!
来源: 互联网 发布时间:2015-04-20
本文导语: #include #include int main(){ int fd; char buf[512]; fd = open("/usr/tmp/exam.c", O_RDONLY); if (fd >= 0) read(fd, buf, sizeof(buf)); return 0; } 这是...
#include
#include
int main(){
int fd;
char buf[512];
fd = open("/usr/tmp/exam.c", O_RDONLY);
if (fd >= 0)
read(fd, buf, sizeof(buf));
return 0;
}
这是从一篇文档中取下的example,我在vmware下调试,输出结果是“couldn't open",不知什么地方有问题?还有一个奇怪现象,同一个程序也是与文件操作有关的,第一天运行正常,第二天却显示 could not open,不知为什么??
另外,有关系统调用时,比如上面的open,要调用sys_open(),通过set_system_gate(0x80,&system_call),进入,而set_system_gate是在初始化时执行的,一旦初始化完了系统调用还是从这里通过int 0x80进入吗?
请指教!谢谢
#include
int main(){
int fd;
char buf[512];
fd = open("/usr/tmp/exam.c", O_RDONLY);
if (fd >= 0)
read(fd, buf, sizeof(buf));
return 0;
}
这是从一篇文档中取下的example,我在vmware下调试,输出结果是“couldn't open",不知什么地方有问题?还有一个奇怪现象,同一个程序也是与文件操作有关的,第一天运行正常,第二天却显示 could not open,不知为什么??
另外,有关系统调用时,比如上面的open,要调用sys_open(),通过set_system_gate(0x80,&system_call),进入,而set_system_gate是在初始化时执行的,一旦初始化完了系统调用还是从这里通过int 0x80进入吗?
请指教!谢谢
|
改成下面的代码看看出错信息.
#include
#include
int main(){
int fd;
char buf[512];
fd = open("/usr/tmp/exam.c", O_RDONLY);
if (fd >= 0)
read(fd, buf, sizeof(buf));
else
perror("open error");
return 0;
}
#include
#include
int main(){
int fd;
char buf[512];
fd = open("/usr/tmp/exam.c", O_RDONLY);
if (fd >= 0)
read(fd, buf, sizeof(buf));
else
perror("open error");
return 0;
}
|
1、怎么编译连接的?
2、这个信息是应用输出的还是shell输出的?
3、strace appname看看是什么错误?
2、这个信息是应用输出的还是shell输出的?
3、strace appname看看是什么错误?
|
/usr/tmp/exam.c 存在吗?若没有建一个试试.