<分区>
我正在编写一个程序,它只是在 Linux 上用 C 语言复制一个可执行文件。
#include <stdio.h>
int main(int args,char*argv[]){
FILE *src1;
FILE *final;
if ((src1 = fopen("/home/exophrenik/Desktop/src1","rb")) == NULL)
{
printf("Could not open src1\n");
return -12;
}
if ((final = fopen("/home/exophrenik/Desktop/final","wb")) == NULL)
{
printf("Could not open final\n");
return -32;
}
int c;
while((c=fgetc(src1))!=EOF)
{
printf("%d\n",c);
fputc(c,final);
}
fclose(src1);
fclose(final);
return 0;
}
程序已正确编译,看起来它的工作是正确的。唯一的问题是,当我尝试从命令行运行“最终”可执行文件时,出现“权限被拒绝”错误。我将上面的程序重新编译为 sudo 并以 sudo 运行它,但它确实有所不同。 根据我的 linux 小经验,我知道当您尝试使用 ./命令运行程序但它不是可执行文件时,经常会遇到权限被拒绝的情况,例如尝试打开这样的 txt 文件而不是使用 gedit 打开它。
我的问题是,当我唯一做的就是复制一个已经工作的可执行文件时,为什么会出现同样的错误?我在复制过程中是否做错了什么以某种方式破坏了新文件?