int main()
{
cout << "lalalla!";
//system("pause");
return 0;
}
При запуске выходит это
[console] sh: 1 /media/DATA/Projects/C++_Projects/03/main: Permission denied
Process returned 123 (0x7e) execution time : 0.001 s
Press Enter to continue.
[/console]
У каждого файла в Linux есть права доступа, в т.ч. право использования(execute). Компилятор(точнее линкер) знает об этом, и устанавливает его.
Однако. В целях безопасности, все ФС смонтированные юзером(man mount, see users) по умолчанию монтируются с фичей noexec(а ФС типа vfat с fmask=0177). Таким образом права исполнения у файлов нет.
Попробуйте разместить проект в каталоге $HOME, и проверьте, что-бы в его опциях монтирования не было noexec.
Ну также вы можете сменить fmask=0077 для этой флешки. Ещё можно (если вы рут) отправить файл в /usr/local/, и там поставить ему chmod 0755 main, хотя это опасно конечно.
это смотря где. Да, стандартно в /etc/fstab, но флешек там обычно нет.
"Konlor95" написал:
Мне надо хранить файлы на локальном диске D.
если общий с маздаем(ntfs), то
text
uid=value, gid=value and umask=value
Set the file permission on the filesystem. The umask value is given in octal. By
default, the files are owned by root and not readable by somebody else.
т.е. нужна опция umask=0000 (если я конечно ничего не путаю, т.к. маздая у меня нет чтоб проверить)
ntfs НЕ умеет exec, и потому ставит право execute так, как написано в umask (точнее оно инвертирует umask, если umask=0000, это значит -- всё разрешено).