C++ 在C+中执行shell命令xdool+;在linux上 #包括 #包括 #包括 #包括 使用名称空间std; 内部主(空) { //正在尝试执行: //xdotool mousemove 1500 1500 //char命令[]=“/usr/bin/xdool\0”; char命令[]=“xdool\0”; char参数[]=“mousemove\0”; int src_x=1500; int src_y=1500; charx[5]; memset(x,0x00,5); sprintf(x,“%d”,src_x); chary[5]; memset(y,0x00,5); sprintf(y,“%d”,src_y); cout
在汇编C++ 在C+中执行shell命令xdool+;在linux上 #包括 #包括 #包括 #包括 使用名称空间std; 内部主(空) { //正在尝试执行: //xdotool mousemove 1500 1500 //char命令[]=“/usr/bin/xdool\0”; char命令[]=“xdool\0”; char参数[]=“mousemove\0”; int src_x=1500; int src_y=1500; charx[5]; memset(x,0x00,5); sprintf(x,“%d”,src_x); chary[5]; memset(y,0x00,5); sprintf(y,“%d”,src_y); cout,c++,linux,exec,xdotool,C++,Linux,Exec,Xdotool,在汇编args时,需要添加“xdool”作为第一个参数 从forexecvp: 按照惯例,第一个参数应该指向文件名 与正在执行的文件关联 因此它应该是char*args[]={“xdool”,参数,x,y,nullptr};组装args时,需要添加“xdool”作为第一个参数 从forexecvp: 按照惯例,第一个参数应该指向文件名 与正在执行的文件关联 所以它应该是char*args[]={“xdool”,参数,x,y,nullptr}; #include <unistd.h>
args
时,需要添加“xdool”作为第一个参数
从forexecvp
:
按照惯例,第一个参数应该指向文件名
与正在执行的文件关联
因此它应该是
char*args[]={“xdool”,参数,x,y,nullptr};
组装args
时,需要添加“xdool”作为第一个参数
从forexecvp
:
按照惯例,第一个参数应该指向文件名
与正在执行的文件关联
所以它应该是char*args[]={“xdool”,参数,x,y,nullptr};
#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);
*/
}