-3

所以我正在编写一个更像是外壳的 C 程序,我已经到了需要创建一个命令来在 nano 中打开文件的地步。实际上,我的这个工作非常好,而且一切正常。除了我得到一个 Sh 1. Permission Denied 当我打开文件时。

char filename[4080];
printf("Enter the file you wish to edit: ");
scanf("%s", filename);
char thething[4080];
sprintf(thething, "/usr/local/script/send_it.pl %s",
filename);
system(filename);`

当我运行它时,会发生这种情况

pi@raspberrypi ~/JacoShell $ sudo ./shell

JacoShell: /home/pi/JacoShell $nano
Enter the file you wish to edit: /home/pi/JacoShell/test.txt
sh: 1: /home/pi/JacoShell/test.txt: Permission denied

JacoShell: /home/pi/JacoShell $

./shell 被适当地修改了,所以我不知道问题是什么

4

1 回答 1

3

您可能打算传递thethingsystem(),而不是filename。如所写,您的代码不使用 that 的结果sprintf()

但是,在您这样做之前,您可能需要考虑如果您的文件名包含空格或其他特殊字符会发生什么......</p>

于 2014-09-12T22:58:44.047 回答