在Linux上的C ++中执行shell命令xdotool

问题描述 投票:0回答:1
#include <unistd.h>
#include <cstdio>
#include <iostream>
#include <string.h>

using namespace std;

int main(void)
{

//  Trying to execute:
//      xdotool mousemove 1500 1500

//    char command[] = "/usr/bin/xdotool\0";
    char command[] = "xdotool\0";
    char argument[] = "mousemove\0";
    int src_x = 1500;
    int src_y = 1500;

    char x[5];
    memset(x, 0x00, 5);
    sprintf(x, "%d", src_x);
    char y[5];
    memset(y, 0x00, 5);
    sprintf(y, "%d", src_y);

    cout << "command is " << command << "\n";
    cout << "argument is " << argument << "\n";
    cout << "x is " << x << "\n";
    cout << "y is " << y << "\n\n";

    char *args[] = {argument, x, y, nullptr};
    return execvp(command, args);
/*    char *args[] = {x, y, nullptr};
    char *com[] = {argument, nullptr};
    return execvpe(command, com, args);
    */
}

此代码有什么问题?该命令运行,但似乎将每个参数解释为另一个执行。不确定,但我相信它正在运行:

xdotool mousemovexdotool 1500xdotool 1500

这是输出:

命令是xdotool参数是mousemovex是1500y是1500

mousemove:未知命令:1500如果需要命令列表,请运行“ mousemove帮助”

## #include #include #include 使用命名空间std; int main(void){//试图执行:// xdotool mousemove 1500 ...

c++ linux exec xdotool
1个回答
0
投票

组装args时,需要添加“ xdotool”作为第一个参数。

man pageexecvp

© www.soinside.com 2019 - 2024. All rights reserved.