所以我正在编写一个更像shell的C程序,我已经到了需要创建命令来打开nano文件的地步。实际上,我的工作非常好,而且一切正常。除了我得到Sh 1.当我打开文件时,权限被拒绝。
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正确编码,所以我不知道问题是什么
答案 0 :(得分:3)
您可能打算将thething
传递给system()
,而不是filename
。如上所述,您的代码不会使用sprintf()
的结果。
但是,在您这样做之前,您可能想要考虑如果您的文件名包含空格或其他特殊字符会发生什么......