我正在编写一个 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);
我的计算机无法识别resize -10%
标志,并且不会对我的源图像执行任何操作。这是为什么?
最佳答案
按照惯例,进程的第一个参数(可通过 argv[0]
访问)是进程的名称。您尚未包含该内容,因此 "-resize 10%"
被读取为进程名称而不是选项。
另外,"-resize 10%"
实际上是用空格分隔的两个参数,所以需要将它们分开。
rc = execlp("convert", "convert", "-resize", "10%", src, dst, NULL);
关于c - 将可选参数传递到 C execlp() 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70660964/