gpt4 book ai didi

c - open() 系统调用有时会失败,有时会成功

转载 作者:行者123 更新时间:2023-12-02 01:37:04 24 4
gpt4 key购买 nike

我试图理解为什么这有时有效,有时无效 -open 和 read 系统调用。

//open files   
fd1=open(argv[1],"O_RDONLY");
if(fd1==-1){
printf("open file number 1 failed\n");
exit(0);
}
fd2=open(argv[2],"O_RDONLY");
if(fd2==-1){
printf("open file number 2 failed\n");
exit(0);
}

//read first byte
r1=read(fd1, &byte1, 1);
if(r1==-1){
printf("read 1 1 error\n");
close(fd1);
exit(0);
}
r2=read(fd2, &byte2, 1);
if(r2==-1){
printf("read 2 error\n");
close(fd2);
close(fd1);
exit(0);
}

输出:

~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error
~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error

或者如图:/image/NkvNC.png

最佳答案

"O_RDONLY"

啊啊啊啊啊啊啊啊

你想要

O_RDONLY




这里发生的事情是第二个参数是一个(主要是位标志)数字,并且您正在传递一个字符串。由于 ASLR,第二个参数是随机的,因此有时有效,但有时无效。

关于c - open() 系统调用有时会失败,有时会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72193353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com