c - 将可选参数传递到 C execlp() 时出现问题

标签 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);

我的计算机无法识别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/

相关文章:

c - feof 检测错误的文件结尾

c - 段错误 - 调试程序集 gdb

C Linux 信号处理

networking - `net use` 启动脚本后网络驱动器进入炼狱

inheritance - Groovy 中函数覆盖和可选参数的奇怪行为

c - 所以我尝试使用 c 创建简单的注册和登录

javascript - 从命令行执行多个 mongo 脚本

command-line - GO:{GOOS} 和 {GOARCH} 在环境中未被识别

excel - VBA - 如何测试是否提供了可选字符串参数?

javascript - AngularJS 中的可选依赖项