【发布时间】:2012-07-14 02:16:21
【问题描述】:
如何让我的程序接受带有空格的命令行参数?
又一个编辑:我刚刚认识到该程序是从一个为程序执行设置环境的 shell 脚本启动的。由于有一些外部库,LD_LIBRARY_PATH 设置为当前工作目录:
#!/bin/sh
ARCH=`uname -m`
export LD_LIBRARY_PATH=".:lib/magic/linux-${ARCH}"
./data_sniffer.bin $*
exit $?
这个问题肯定与$* 有关。有没有办法正确转发命令行参数?
这是来自main()的code-sn-p:
if (stat(argv[1], &lStat) != 0)
{
fprintf(stderr, "Cannot stat(2) given file: %s. \n", argv[1]);
return EXIT_FAILURE;
}
我正在使用以下参数启动我的程序:
./data_sniffer /mnt/pod/movies/some\ test\ movie\ file.avi
生成的错误消息如下所示: 无法 stat(2) 给定文件:/mnt/pod/movies/some.
有人知道这里出了什么问题吗?我认为我不是第一个遇到这个问题的人(虽然,我在这里找不到相关的问题)。
【问题讨论】:
-
嗨,马特,很抱歉,这是一个错误。请认为它是 argv[1] (已在问题中编辑)。
-
我的答案已经更新了相关信息以解决您的问题,以后不要发布问题然后决定更改它 - 这对决定的我们来说非常烦人回答第一个,然后意识到这完全没有意义。
-
我很抱歉这样做。也许我应该开始一个新问题,而不是下次更改现有问题。感谢您提供有用的答案。它解决了我的问题。