#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 mousemove
xdotool 1500
xdotool 1500
Это вывод:
команда является аргументом xdotool
is mousemove
x - 1500
y - 1500
mousemove: неизвестная команда: 1500
Запустите 'mousemove help', если вам нужен список команд