所有这些都是在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/

10-11 21:16