以编程方式处理File Path Unix中的空格

时间:2014-08-02 17:23:38

标签: c unix freebsd

我试图从我的磁盘中随机打开文件。问题是大多数人在他们的道路上都有空间而且不会受到影响 打开,除非我在飞行中添加反斜杠,这比我想象的更难。在做研究时我看到了 how does unix handle full path name with space and arguments? 你说可以使用反斜杠或引号,但这是指将参数传递给shell。是否有可能做... ...

 static int removeSpaces(char **inBuf, char **outBuf)
 {
     /* Declarations */
     int rtrn;
     char *pos;

     /* Null terminate incoming buffer */
     if((pos=strchr(*inBuf, '\n')) != NULL)
     {
         *pos = '\0';
     }

     rtrn = asprintf(outBuf, "\"%s\"", *inBuf);
     if(rtrn < 0)
     {
         printf("Memory Error\n");
         return -1;
     }
     return 0;
 }

 int main(void)
 {
     int rtrn;

     char *file, *parsed;

     rtrn = getFile(&file);
     if(rtrn < 0)
     {
         printf("Can't Get File\n");
         return -1;
     }

     rtrn = removeSpaces(&file, &parsed);
     if(rtrn < 0)
     {
         printf("Can't Get File\n");
         return -1;
     }

     printf("Parsed: %s\n", parsed);
     fd = open(parsed, O_RDONLY);
     if(fd < 0)
     {
         perror("Can't Open File\n");
         return -1;
     }
     return 0;      
}

我目前没有这样的文件或目录,但我想知道我可以将引用的文件路径传递给open()或fopen(),或者只是将文件路径传递给shell的情况。我问的是因为我在网络上看到的关于unix和unix类系统的信息非常少,大部分是关于windows(至少我看到的),我为unix找到的是关于shell而不是系统调用

0 个答案:

没有答案