如何使用 C++ 程序调用路径 /usr/bin 中的可执行文件?

问题描述

我在 linux 机器的 /usr/bin 路径中有一个基于 GUI 的可执行文件 这个可执行文件需要三个参数 - 两个整数值和一个字符

你能告诉我如何从用户空间 C++ 程序调用和运行这个可执行文件

解决方法

不要无故不回答这个问题

df = pd.DataFrame({'date':[datetime.date(2021,3,3),datetime.date(2021,4)],'player':['a','b'],'score':[10,9]})

print(type(df['date'][0]))
<class 'datetime.date'>

df = df.set_index('date')

print(type(df.index.get_level_values('date')[0]))
<class 'datetime.date'>

df = df.reset_index()

print(type(df['date'][0]))
<class 'datetime.date'>

df = df.set_index(['date','player'])

print(type(df.index.get_level_values('date')[0]))
<class 'pandas.tslib.Timestamp'>

df = df.reset_index()

print(type(df['date'][0]))
<class 'pandas.tslib.Timestamp'>

将参数构建为字符串,fork 并执行它。真的很琐碎。不要忘记pid_t runprocess(int arg1,int arg2,char arg3) { static const char program[] = "/usr/bin/..."; char arg1c[12]; char arg2c[12]; char arg3c[2]; sprintf(arg1c,"%d",arg1); sprintf(arg2c,arg2); arg3c[0] = arg3; arg3c[1] = 0; pid_t pid = vfork(); if (pid == 0) { signal(SIGHUP,SIG_IGN); /* since it's a GUI program,detach from console HUP */ close(0); /* and detach from stdin */ if (open("/dev/null",O_RDWR)) _exit(137); /* assertion failure */ execl(program,program,arg1c,arg2c,arg3c,NULL); _exit(errno); } return pid; }

由于子进程是一个 GUI 进程,我们将 HUP 与我们可能正在运行或可能未运行的终端分离,并用 wait() 替换 stdin。