我试图从我的磁盘中随机打开文件。问题是大多数人在他们的道路上都有空间而且不会受到影响 打开,除非我在飞行中添加反斜杠,这比我想象的更难。在做研究时我看到了 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而不是系统调用