पर सी का उपयोग कर सही अनुमति के साथ निर्देशिका कैसे बनाएं I एक सरल सी प्रोग्राम लिखने की कोशिश कर रहा हूं जो निर्देशिका बनाता है (एक mkdir क्लोन।)।पॉज़िक्स
#include <stdlib.h>
#include <sys/stat.h> // mkdir
#include <stdio.h> // perror
mode_t getumask()
{
mode_t mask = umask(0);
umask (mask);
return mask;
}
int main(int argc, const char *argv[])
{
mode_t mask = getumask();
printf("%i",mask);
if (mkdir("trial",mask) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
इस कोड d---------
साथ निर्देशिका बनाता है लेकिन मैं इसे drwxr-xr-x
के साथ बनाने के लिए की तरह mkdir करना चाहते हैं: यह क्या मैं अब तक किया है? मुझसे यहां क्या गलत हो रहा है?
संपादित करें:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
umask के अनुसार सही अनुमतियाँ सेट करने से नियंत्रित किया जाता है: यह मेरे लिए काम कर समाधान है। तो मुझे केवल पूर्ण अनुमतियों के साथ mkdir को कॉल करने की आवश्यकता है, और यह वर्तमान उमास्क के अनुसार कटा हुआ हो जाता है।
डायग्नोस्टिक प्रिंट का उत्पादन क्या होता है? यदि आप '% i' के बाद एक नई लाइन जोड़ते हैं तो यह बेहतर काम कर सकता है, और यदि आप'% i' के बजाय '% o' या'% .4o' का उपयोग करते हैं तो यह अधिक आसानी से सुगम होगा। साथ ही, आपको # # शामिल 'दिखाई दे रहा है जो' 'umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html) और ['mkdir()'] घोषित करता है (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html)। –
यह% 4o के साथ 22 का उत्पादन करता है। – yasar