所有这些都是在Linux而不是Windows中实现的
你好,我想知道怎样才能像在终端一样改变xeyes的颜色
Xeyes-前景蓝
现在我想在c程序中使用path
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include <malloc.h>
//#inlcude <windows.h>
#define LB_SIZE 1024
int main(int argc, char *argv[])
{
char fullPathName[] = "/usr/bin/X11/xeyes";
char *myArgv[LB_SIZE]; // an array of pointers
myArgv[0] = (char *) malloc(strlen(fullPathName) + 1);
strcpy(myArgv[0], fullPathName);
myArgv[1] = NULL; // last element should be a NULL pointer
execvp(fullPathName, myArgv);
exit(0); // should not be reached
}
如果我简单地调用/usr/bin/x11/xeyes,它只显示眼睛
现在我试图添加/usr/bin/x11/xeyes fg这样的命令,但它不起作用
有什么建议吗?
最佳答案
可以添加到参数向量上,如下所示:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <malloc.h>
#define LB_SIZE 1024
int main(int argc, char *argv[])
{
char fullPathName[] = "/usr/bin/X11/xeyes";
char *myArgv[LB_SIZE]; // an array of pointers
int n = 0;
myArgv[0] = (char *) malloc(strlen(fullPathName) + 1);
strcpy(myArgv[n++], fullPathName);
myArgv[n++] = "-fg";
myArgv[n++] = "blue";
myArgv[n] = NULL; // last element should be a NULL pointer
execvp(fullPathName, myArgv);
exit(0); // should not be reached
}
以下是结果图片:
现在,我希望
strace
显示正在打开的rgb.txt文件,但是使用-f
选项看不到(假设它发生在服务器中)。“蓝色”确实出现在跟踪中,但仅出现在exec调用中,例如,execve("/usr/bin/X11/xeyes", ["/usr/bin/X11/xeyes", "-fg", "blue"], [/* 62 vars */]) = 0
关于c - 如何使用c中的路径更改xeyes的颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29400209/