Как использовать восьмеричную строку из * ARGV [] что-то вроде:восьмеричного строку в целом число открытыхов (O_CREATE) разрешения
open("outfile",O_CREAT | O_RDWR,0777);
0777 означает разрешение в восьмеричных числах.
Мой код: выход
int arC = atoi(argv[optind]);
printf("argv optind %s after atoi %d\n",argv[optind],arC);
int test =des2=open("createfile",O_CREAT | O_RDWR,arC);
printf("fd %d\n",test);
Terminal:
./copymaster -c 0777 in
argv optind 0777 after atoi 777
fd 5
Но разрешения не установлены в 0777. open()
просто игнорирует arC
.
Как преобразовать эту строку argv[optind]
в полезную форму для команды open()
?
Не уверен, что вы просите, но, возможно, вам нужно ['strtol'] (http://www.cplusplus.com/reference/cstdlib/strtol/). –
Просто для получения функций 'ato *()'. Они ненадежны, чтобы не сказать бесполезно, поскольку они неправильно указывают на неудачи конверсии. Перейдите к семейству функций 'strto *()'. – alk