【问题标题】:How to provide parameters to commands called by `system()`?如何为`system()`调用的命令提供参数?
【发布时间】:2012-08-21 05:43:15
【问题描述】:

我想从 C 程序中执行以下命令:

amixer --quiet set Master 5+
amixer --quiet set Master 6-

这里,5 和 6 不是固定值。它们是代码的输入参数,可以有不同的值。

谁能指导我如何实现这一目标?

【问题讨论】:

标签: c spawn


【解决方案1】:

你试过了吗:

system("amixer --quiet set Master 5+");
system("amixer --quiet set Master 6-");

【讨论】:

  • 我已经尝试过这个解决方案。但是不能使用这种方式将值 5/6 修改为其他人。
  • 使用一个缓冲区,sprintf你想要的命令,然后用这个缓冲区调用system
【解决方案2】:

以下代码可以实现:

#include <stdio.h>
#include <stdlib.h>     /* For system() */

#define SIZE 28

int main()
{
    char action;
    unsigned int level;

    char CommandString[SIZE];

    printf ("\nTo Increase\\Decrease volume press 'i'/'d': ");
    scanf  ("%c", &action);

    if (action!='i'&& action !='d')
    {
        printf ("\nInvalid Choice, please try again\n");
        main();
    }

    printf ("\nEnter Voice Change Level: ");
    scanf  ("%u", &level);

    if (action=='i')
    {
        printf ("\nIncreasing Voice level by: %u\n", level);
        sprintf (CommandString, "amixer --quiet set Master %d+", level);
    }
    else
    {
        printf ("\nDecreasing Voice level by: %u\n", level);
        sprintf (CommandString, "amixer --quiet set Master %d-", level);
    }

    system (CommandString);

    return 0;
}

【讨论】:

  • 谢谢。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多