jav*_*ner 2 c command-line optional-parameters
我正在编写一个 C 程序,用于execlp()运行 linux 命令行工具convert. 该命令采用可选参数。但是,当与 一起使用时execlp(),我的 C 程序无法识别我传入的标志,因此无法正确执行该命令。
例如,如果我在终端中运行此命令,convert -resize 10% src.jpg dst.jpg它会将 src 图像的大小调整 10%,并将其保存到 dst。但是当我用这段代码运行我的C程序时
rc = execlp("convert", "-resize 10%", src, dst, NULL);
Run Code Online (Sandbox Code Playgroud)
我的计算机无法识别该resize -10%标志,并且不会对我的源图像执行任何操作。这是为什么?
按照惯例,进程的第一个参数(可通过 访问argv[0])是进程的名称。您还没有包含它,因此"-resize 10%"被读取为进程名称而不是选项。
另外,"-resize 10%"实际上是用空格分隔的两个参数,因此需要将它们分开。
rc = execlp("convert", "convert", "-resize", "10%", src, dst, NULL);
Run Code Online (Sandbox Code Playgroud)